逆向工程插件和分页插件使用

mybatis逆向工程插件

1.新建maven项目

新建文件夹 /mybatis-maven/src/main/resources,在文件夹下新建文件 generatorConfig.xml。

在这里插入图片描述

2.导入mybatis相关依赖pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>day51maven</artifactId>
    <version>1.0-SNAPSHOT</version>

    <packaging>war</packaging>

    <!-- 如此做了后,在别的机器上运行自己的jar,就不会爆jdk版本低的错误。 -->
    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>
    
     <dependencies>
          <!--(清新简洁版)则不需要此依赖 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.2</version>
                <configuration>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                </configuration>

                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>5.1.49</version>
                    </dependency>
                    <!-- 插件的依赖 -->
                </dependencies>

            </plugin>
        </plugins>
    </build>


</project>

配置插件 generator 版本是 1.3.2 并配置 Mysql 驱动是 5.1.49。与generatorConfig.xml文件中保持一致

3.配置文件 generatorConfig.xml

修改数据库连接的信息

generatorConfig.xml 是在目录 src 下的 main 下的 resources 下。注意这里的targetProject="./src" 生成的文件也会在这个下面。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
    <!--
    targetRuntime: 执行生成的逆向工程的版本
    MyBatis3Simple: 生成基本的CRUD(清新简洁版)
    MyBatis3: 生成带条件的CRUD(奢华尊享版)
    -->
    <context id="DB2Tables" targetRuntime="MyBatis3Simple">
        <!-- 数据库的连接信息 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/mybatis" userId="root"
                        password="root">
        </jdbcConnection>
        <!-- javaBean的生成策略-->
        <javaModelGenerator targetPackage="com.pojo" targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
        <!-- SQL映射文件的生成策略 -->
        <sqlMapGenerator targetPackage="com.mapper" targetProject=".\src\main\resources">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>
        <!-- Mapper接口的生成策略 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.mapper"   targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>
        <!-- 逆向分析的表 -->
        <!-- tableName设置为*号,可以对应所有表,此时不写domainObjectName -->
        <!-- domainObjectName属性指定生成出来的实体类的类名 -->
        <table tableName="login" domainObjectName="Login"/>
<!--        <table tableName="t_dept" domainObjectName="Dept"/>-->
    </context>
</generatorConfiguration>

4.运行命令mybatis-generator:generate(双击运行自动生成代码)

在这里插入图片描述

5.结果展示

在这里插入图片描述

mybatis逆向工程的三种方式

SSM逆向工程

同mybatis一样的操作步骤

在这里插入图片描述

generator.properties的配置信息(要不要都可以)

jdbc.driverLocation=mysql-connector-java-5.1.49-bin.jar
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.connectionURL=jdbc:mysql://localhost:3306/java2206?zeroDateTimeBehavior=convertToNull
jdbc.userId=root
jdbc.password=root

如果去掉generator.properties的配置信息则需要在generatorConfig.xml配置完整的数据源信息

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
    <!--
    targetRuntime: 执行生成的逆向工程的版本
    MyBatis3Simple: 生成基本的CRUD(清新简洁版)
    MyBatis3: 生成带条件的CRUD(奢华尊享版)
    -->
    <context id="DB2Tables" targetRuntime="MyBatis3Simple">
        <!-- 数据库的连接信息 这里的数据库信息可以用generator.properties进行替代便于维护-->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/java2206" userId="root"
                        password="root">
        </jdbcConnection>
        <!-- javaBean的生成策略-->
        <javaModelGenerator targetPackage="com.pojo" targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
        <!-- SQL映射文件的生成策略 -->
        <sqlMapGenerator targetPackage="com.mapper" targetProject=".\src\main\resources">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>
        <!-- Mapper接口的生成策略 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.mapper"   targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>
        <!-- 逆向分析的表 -->
        <!-- tableName设置为*号,可以对应所有表,此时不写domainObjectName -->
        <!-- domainObjectName属性指定生成出来的实体类的类名 -->
        <table tableName="login" domainObjectName="Login"/>
        <!--        <table tableName="t_dept" domainObjectName="Dept"/>-->
    </context>
</generatorConfiguration>

SSM逆向工程Easycode插件

1.下载插件:File→Setting→Plugins(安装后重启IDEA生效!!!!!)

在这里插入图片描述

2.搭建好SSM环境配置(ssm环境配置一文)

在pom.xml文件中添加插件依赖

<build>
    <plugins>
        <!-- maven-compiler-plugin 插件是一个 Maven 插件,用来编译项目代码 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.6.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>

        <!-- 添加tomcat插件 -->
        <plugin>
            <groupId>org.apache.tomcat.maven</groupId>
            <artifactId>tomcat7-maven-plugin</artifactId>
            <version>2.2</version>
            <configuration>
                <path>/</path>
                <port>8080</port>
            </configuration>
        </plugin>
    </plugins>
</build>

3.连接数据库(简单增删查改案例jdbc + Servlet + jsp一文有连接方式)

在这里插入图片描述

4.连接成功后,就可以逆向生成代码了

代码生成前目录

在这里插入图片描述

逆向生成代码

在这里插入图片描述

在这里插入图片描述

代码生成后目录,修改配置文件相应扫描包名

在这里插入图片描述

ssm使用easycode自动生成代码分页报错导入依赖

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-commons</artifactId>
    <version>2.5.1</version>
</dependency>

easycode插件controller生成的分页方法(这里参数的写法要注意修改)

    /**
     * 分页查询
     *
     * @param users       筛选条件
     * @param pageRequest 分页对象
     * @return 查询结果
     * SSM 的简单分页测试:打开浏览器输入--》http://localhost:8081/student/selectPage
     * 在selectPage后可以加 ?cp=1&ps=3 (数字可更改)来访问不同页数据
     *
     */
    @GetMapping("/user")
    public ResponseEntity<Page<Users>> queryByPage(Users users, PageRequest pageRequest) {
        return ResponseEntity.ok(this.usersService.queryByPage(users, pageRequest));
    }
//    @GetMapping("/selectPage")
//    public List<Student> getStudentsByPage(@RequestParam(value = "cp",defaultValue = "1") int currentPage , @RequestParam(value = "ps",defaultValue = "5") int pageSize){
//        currentPage = currentPage <= 1 ? 1 : currentPage;
//        pageSize = pageSize <= 0 ? 10 : pageSize;
//        return studentService.queryAllByLimit((currentPage - 1) * pageSize,pageSize);
//    }

分页插件

mybatis环境下

分页插件pagehelper的使用(三步走)

  • 1.导jar包(添加pagehelper的依赖)

  • 2.配置文件

  • 3.调用方法

  • ①controller

    ②service实现类

1.导jar包(添加pagehelper的依赖)

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>4.1.6</version>
</dependency>

使用插件也需要在pom中添加插件依赖

<build>
    <plugins>
        <!-- define the project compile level -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.6.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

2.配置文件

放到mybatis-config.xml里面

<plugins>
		<!-- 配置pagehelper分页插件 -->
		<!-- PageHelper4.1.1 -->
		<plugin interceptor="com.github.pagehelper.PageHelper">
			<property name="dialect" value="mysql" />
			<property name="offsetAsPageNum" value="false" />
			<property name="rowBoundsWithCount" value="false" />
			<property name="pageSizeZero" value="true" />
			<property name="reasonable" value="false" />
			<property name="supportMethodsArguments" value="false" />
			<property name="returnPageInfo" value="none" />
		</plugin>
	</plugins>


3.调用方法

controller

要明白前端传入的什么参数,这里写一个全查的方法即可

//全查方法
 @RequestMapping("/findAll")
    public String findAll(@RequestParam(defaultValue = "1") Integer pageNum, @RequestParam(defaultValue = "3") Integer pageSize, Model m){
    	//查询分页的数据
        PageInfo<Shops> shop = shopsService.findShops(pageNum,pageSize);
       
        m.addAttribute("shop",shop);
        return "shoplist";
    }

这里传了当前页pageNum,每页的条数pageSize,并给了默认值
调用全查的方法,返回一个PageInfo,并传到前端
(pageInfo里面封装了分页所用到的参数,方法)

service实现类

@Override
    public PageInfo<Shops> findShops(Integer pageNum, Integer pageSize) {
    	//查询分页数据
    	//使用pageHelper设置分页条件
        PageHelper.startPage(pageNum,pageSize);
        //调用全查方法
        List<Shops> shops = shopsMapper.findShops();
        //封装到pageInfo并返回
         //使用PageInfo分页对象保存分页查询结果
        PageInfo<Shops> list=new PageInfo<Shops>(shops);
        return list;
    }

注意:只有在PageHelper.startPage()方法之后的第一个查询会有执行分页。·分页插件不支持带有“for update”的查询语句。分页插件不支持“嵌套查询”,由于嵌套结果方式会导致结果集被折叠,所以无法保证分页结果数量正确。


版权声明:本文为qq_48578877原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>