一、逆向工程
逆向工程,mybatis可以通过数据库中的表帮助我们生成相关的domain对象,以及基本的sql查询语句(相关mapper接口以及xml文件)。
1. 导入jar包
mybatis-generator-core-1.3.2.jar
2.创建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>
<!-- 配置数据库连接源 -->
<context id="DB2Tables" targetRuntime="MyBatis3">
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/db_study?allowMultiQueries=true"
userId="root"
password="root">
</jdbcConnection>
<!-- java 类型解析器 -->
<javaTypeResolver >
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- javaModelGenerator:
指定javaBean的生成策略
targetPackage:目标文件夹(包名 生成JavaBean)
targetProject:目标工程
-->
<javaModelGenerator targetPackage="com.yyl.pojo" targetProject=".\src">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- sqlMapGenerator:
指定sql映射生成策略(mapper.xml)
targetPackage:目标文件包名
targetProject:目标工程 (当前工程 .\src )
-->
<sqlMapGenerator targetPackage="com.yyl.mapper" targetProject=".\src">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- javaClientGenerator:
指定mapper接口所在位置
-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.yyl.mapper" targetProject=".\src">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- 指定逆向分析的表 - 根据表生成JavaBean
domainObjectName: 生成的pojo实体类名
tableName:表名
-->
<table tableName="student" domainObjectName="Student"></table>
<table tableName="teacher" domainObjectName="Teacher"></table>
</context>
</generatorConfiguration>
3.运行示例
public class MbgTest {
public SqlSessionFactory getSqlSessionFactory() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
return new SqlSessionFactoryBuilder().build(inputStream);
}
/**
* 生成逆向工程 1. 引入mybatis-generator-core-1.3.2.jar 2. 配置关于逆向工程的配置文件 3. 运行 ---
* 可以直接复制文档内容
*
* @throws Exception
* @throws XMLParserException
*/
@Test
public void testMybatisMbg() throws Exception, XMLParserException {
List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
File configFile = new File("mbg.xml");// 修改为自己编写的文件名称
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(configFile);
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
myBatisGenerator.generate(null);
}
/**
* 测试逆向工程 逆向工程可以生成简单版 - 设置targetRuntime改变
* 如果targetRuntime=Mybatis3,那么会生成很齐全的数据访问代码 selectByExample
* 表示查询所有,如果查询所有则传入null。
*
* @throws IOException
*/
@Test
public void testMybatis() throws IOException {
SqlSessionFactory factory = getSqlSessionFactory();
SqlSession session = factory.openSession();
StudentMapper mapper = session.getMapper(StudentMapper.class);
// 设置多条件查询 -- 查询名字中带有 x 的
// 1.创建 相关Example
StudentExample st = new StudentExample();
// 2.创建criteria
Criteria criteria = st.createCriteria();
// 3.设置条件 -- 注意如果有多个条件 则创建多个criteria
criteria.andNameLike("%x%");
// 4.将设置好的Example传入查询
List<Student> list = mapper.selectByExample(st);
for (Student student : list) {
System.out.println(student.getName());
}
session.close();
}
}
二、插件使用(分页 PageHelper)
PageHelper github地址---https://github.com/pagehelper/Mybatis-PageHelper
1.导入jar包
jsqlparser-2.1.jar
pagehelper-5.1.9.jar
2.配置拦截器插件
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>
3.简单使用
public class PageHelperTest {
public SqlSessionFactory getSqlSessionFactory() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
return new SqlSessionFactoryBuilder().build(inputStream);
}
/**
* PageHelper 插件使用
* 1. 导入PageHelper.jar jsqlparser.jar
* 2. 在mybatis.xml文件中配置plugins标签 interceptor="com.github.pagehelper.PageInterceptor"
* 3. 使用:
* 1.直接使用PageHelper静态方法
* 2.使用PageInfo 封装
* @throws IOException
*/
@Test
public void testPageHelper() throws Exception {
SqlSessionFactory factory = getSqlSessionFactory();
SqlSession session = factory.openSession();
StudentMapper studentMapper = session.getMapper(StudentMapper.class);
// 设置开始的页码,以及每页显示记录数 ,会自动改造sql语句
PageHelper.startPage(5,1);
List<Student> list = studentMapper.selectByExample(null);
// 使用PageInfo封装查询出的结果,可以设置显示的页数,总共显示五页
PageInfo<Student> pageInfo = new PageInfo<>(list,5);
// 遍历出页码
int[] nums = pageInfo.getNavigatepageNums();
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
}
}
}