MybatisPageHelper
所需jar
pageHelper.jar
jsqlparser.jar
配置生成文件
需要 mybatis-generator-core-1.3.5.jar
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE generatorConfiguration PUBLIC
"-//mybatis.org//DTD MyBatisGenerator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
<generatorConfiguration>
<!--数据库驱动-->
<classPathEntry location="E:\javacode\Projects\Spring\File\web\lib\ojdbc8.jar"/>
<context id="context" targetRuntime="MyBatis3Simple">
<commentGenerator>
<property name="suppressAllComments"value="false"/>
<property name="suppressDate"value="true"/>
</commentGenerator>
<!--数据库连接信息-->
<jdbcConnection userId="用户名 " password="密码 "
driverClass="oracle.jdbc.driver.OracleDriver"
connectionURL="jdbc:oracle:thin:@localhost:1521:orcl"/>
<javaTypeResolver>
<property name="forceBigDecimals"value="false"/>
</javaTypeResolver>
<!--生成的实体类-->
<javaModelGenerator targetPackage="com.cn.mybatis.entity"targetProject=".">
<property name="enableSubPackages"value="false"/>
<property name="trimStrings"value="true"/>
</javaModelGenerator>
<!--Mapper.xml-->
<sqlMapGenerator targetPackage="mapper"targetProject=".">
<property name="enableSubPackages"value="false"/>
</sqlMapGenerator>
<!--Dao-->
<javaClientGenerator targetPackage="com.cn.mybatis.dao"type="XMLMAPPER"targetProject=".">
<property name="enableSubPackages"value="false"/>
</javaClientGenerator>
<!--选定表 schema用户名 tableName表 domainObjectName实体类名称 mapperName接口名称 -->
<table schema="" tableName=""enableCountByExample="false"enableDeleteByExample="false"
enableSelectByExample="false"enableUpdateByExample="false"domainObjectName="Grade"
mapperName="GradeDao"/>
</context>
</generatorConfiguration>
Mybatis配置
实体类
使用lombok.jar(@Data提供getter,setter,toString,equals)
package com.cn.mybatis.entity;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalDate;
@Data
public class Student implements Serializable {
private String id;
private Stringname;
private int age;
private Stringaddress;
private Stringsex;
private LocalDatebirthday;
private LocalDateregDate;
private StringgradeId;
}
接口
public interface StuDao {
int totalCount(Student stu);
List<StuDao> queryStu(PageInfo pageInfo);
}
stuDao.xml
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.cn.mybatis.dao.StuDao">
<select id="queryStu" resultType="Student"parameterType="com.github.pagehelper.PageInfo">
selectID,NAME from STUDENT
<where>
条件
</where>
</select>
<select id="totalCount" resultType="Integer" parameterType="Student">
selectcount(1)from student
<where>
条件
</where>
</select>
</mapper>
DB.properties
jdbc.driver=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@localhost:1521:orcl
jdbc.user=用户名
jdbc.pwd=密码
jdbc.initialSize = 10
mybatis-config,xml
<?xml version="1.0"encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="DB.properties"/>
<settings>
<!--日志-->
<setting name="logImpl" value="STDOUT_LOGGING"/>
<!--关闭缓存开关-->
<setting name="cacheEnabled" value="false"/>
<!--设置超时时间,它决定驱动等待数据库响应的秒数-->
<setting name="defaultStatementTimeout" value="5"/>
<!--是否开启自动驼峰命名规则
即从经典数据库列名 A_COLUMN 到经典 Java 属性名 aColumn 的类似映射。 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!--允许 JDBC 支持自动生成主键-->
<setting name="useGeneratedKeys" value="true"/>
</settings>
<typeAliases>
<typeAlias alias="Student" type="com.cn.mybatis.entity.Student"/>
</typeAliases>
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<!--自动识别使用数据库-->
<property name="autoRuntimeDialect" value="true"/>
<!--<!–配置使用的数据库–>-->
<!--<propertyname="helperDialect" value="oracle"/>-->
<!--使用页码进行分页需要传入beginRow和endRow-->
<property name="offsetAsPageNum" value="true"/>
<!--使用总行数-->
<property name="rowBoundWithCount" value="true"/>
<!--使用页码为0查询所有-->
<property name="pageSizeZero" value="true"/>
<!--查询<=0页为第一页,大于总页数为最后一页-->
<property name="reasonable" value="true"/>
<!--重新定义参数即提供的pageInfo类的属性-->
<property name="params" value="pageNum=currentPage"/>
<!--使用完自动释放调用closeConn-->
</plugin>
</plugins>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.user}"/>
<property name="password" value="${jdbc.pwd}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/StuDao.xml"/>
</mappers>
</configuration>
Test类
package com.cn.mybatis;
import com.cn.mybatis.dao.StuDao;
import com.cn.mybatis.entity.Student;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.Cleanup;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
public class test {
privatestatic SqlSessionFactory sqlFactory;
static {
try {
//lombok提供即finally{inputStream.close()}
@Cleanup
//将配置文件以流的方式转换
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
//将配置文件以流的方式读取
sqlFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch(IOException e) {
e.printStackTrace();
}
}
publicstatic void main(String[] args) {
try {
// 获取sqlSession执行sql
final SqlSession sqlSession = sqlFactory.openSession();
final StuDao stuDao =sqlSession.getMapper(StuDao.class);
//参数的传递stu需要进行setter
Studentstu = new Student();
// 由pageHelper.jar提供
PageInfopage = new PageInfo();
// 总行数
final int count =stuDao.totalCount(stu);
// 显示3行
int displayRows = 3;
// 总页数
page.setPageSize((int) Math.ceil(count / (displayRows * 1.0)));
// 第2页
page.setPageNum(2);
// 获取分页
final Page<Object> objects= PageHelper.startPage(page.getPageNum(), page.getPageSize());
// 进行拦截sql由分页插件管理即需要查询的sql(必须和starPage相邻)
stuDao.queryStu(page);
//遍历
objects.forEach(System.out::println);
} catch(Exception e) {
e.printStackTrace();
}
}
}