逆向工程插件和分页插件使用
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.结果展示
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”的查询语句。分页插件不支持“嵌套查询”,由于嵌套结果方式会导致结果集被折叠,所以无法保证分页结果数量正确。