一:逆向工程
Mybaits 需要程序员自己编写 SQL 语句,但是 Mybatis 官方提供逆向工程可以针对单表自动生成 Mybaits 执行所需要的代码,包括 POJO、Mapper.java、Mapper.xml。
承接上一个记录Mybatis的博客,项目已有了,开始动手。只要一个整合Mybatis的项目就可以了。
1:添加 Mybatis Generator的依赖。
<!-- mybatis逆向工程jar包 -->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.4</version>
</dependency>
添加插件:注意 <configurationFile>src/main/resources/generator/generatorConfig.xml</configurationFile>
设置配置文件的位置。
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<overwrite>true</overwrite>
<configurationFile>src/main/resources/generator/generatorConfig.xml</configurationFile>
</configuration>
</plugin>
再相应的位置添加配置文件。
这里面我设置的内容如下:
<?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>
<classPathEntry location="D:\mavenproject\repository\mysql\mysql-connector-java\8.0.13\mysql-connector-java-8.0.13.jar"/>
<context id="DB2Tables" targetRuntime="MyBatis3">
<!-- JavaBean 实现 序列化 接口 -->
<plugin type="org.mybatis.generator.plugins.SerializablePlugin" />
<!-- 生成toString -->
<plugin type="org.mybatis.generator.plugins.ToStringPlugin" />
<!-- optional,旨在创建class时,对注释进行控制 -->
<commentGenerator>
<property name="suppressDate" value="true"/>
<!-- <property name="suppressAllComments" value="true"/>-->
</commentGenerator>
<!--数据库链接URL,用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/db_1?serverTimezone=UTC"
userId="root"
password="root">
</jdbcConnection>
<!-- 类型转换 -->
<javaTypeResolver >
<!-- 是否使用bigDecimal,
false: 把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer(默认)
true: 把JDBC DECIMAL 和 NUMERIC 类型解析为java.math.BigDecimal
-->
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- 生成模型的包名和位置-->
<javaModelGenerator targetPackage="com.mystore.generator" targetProject="src/main/java">
<!-- 默认false 是否允许子包 -->
<property name="enableSubPackages" value="true" />
<!-- 默认false 是否对model添加 构造函数 -->
<property name="constructorBased" value="false"/>
<!-- 默认false 建立的Model对象是否 不可改变 即生成的Model对象不会有 setter方法,只有构造方法 -->
<property name="immutable" value="false"/>
<!-- 默认false 是否对类CHAR类型的列的数据进行trim操作 -->
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- 生成映射文件的包名和位置-->
<sqlMapGenerator targetPackage="generator/mapper" targetProject="src/main/resources">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- 生成DAO的包名和位置-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.mystore.generator" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->
<!-- <table tableName="risk_model_order" domainObjectName="DSRiskModelOrder" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
<table tableName="tel_bill_record" domainObjectName="DSTelBillRecord" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>-->
<table tableName="t_user"></table>
<table tableName="t_account"></table>
</context>
</generatorConfiguration>
配置内容见注释,可以设置自己需要,如果想见此配置文件中可以设置的内容,由于内容过多我把里面的内容添加到附件里,可以从里面看其他相关配置。
然后找到 Maven Project 双击: generator
控制台输出:表示成功。
生成的内容:
二:使用PageHelper插件实现分页查询
使用其实很简单,也可以参考官方文档详细描述:分页插件中文文档
1:引入pom
<!-- 分页插件pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.0.0</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-autoconfigure</artifactId>
<version>1.2.3</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
<!-- 分页插件pagehelper -->
2:我直接查询所有产品信息进行分页:
mapper内容:
<select id="getAllProduct" resultType="product">
<include refid="defaultSql"></include>
</select>
3:service中直接调用 下面写的只是其中一种使用方式,大家可以参考文档选择自己的喜欢的调用方式,然后进行自己封装结果返回。
@Override
public PageInfo getAllProduct(int pageNum,int pageSize){
PageHelper.startPage(pageNum,pageSize);
List<ProductPo> allProduct = productMappers.getAllProduct();
PageInfo<ProductPo> pageinfo= new PageInfo<ProductPo>(allProduct);
for ( ProductPo po: allProduct) {
System.out.println(po);
}
System.out.println(allProduct.toString());
return pageinfo;
}
4:看下打印结果,很有意思
看到了吗?我遍历集合取出的数据和直接toString集合的数据是不一样的。 debug的时候我们也可以看到,使用分页的之后,我们用mapper调用查询得到的集合结果已经不是普通的集合了而是一个Page对象。
来源:CSDN
作者:姑苏冷
链接:https://blog.csdn.net/A7_A8_A9/article/details/104216931