Mybatis——逆向工程与分页查询

Mybatis——逆向工程与分页查询

十一、MyBatis的逆向工程

正向工程:先创建Java实体类,由框架负责根据实体类生成数据库表。Hibernate是支持正向工程的。

逆向工程:先创建数据库表,由框架负责根据数据库表,反向生成如下资源:

  • Java实体类
  • Mapper接口
    -Mapper映射文件

1、创建逆向工程的步骤

a>添加依赖和插件

<!-- 依赖MyBatis核心包 -->
<dependencies>
   <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.7</version>
   </dependency>
</dependencies>

<!-- 控制Maven在构建过程中相关配置 -->
<build>

      <!-- 构建过程中用到的插件 -->
      <plugins>
      
         <!-- 具体插件,逆向工程的操作是以构建过程中插件形式出现的 -->
         <plugin>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-maven-plugin</artifactId>
            <version>1.3.0</version>
            
            <!-- 插件的依赖 -->
            <dependencies>
            
               <!-- 逆向工程的核心依赖 -->
               <dependency>
                  <groupId>org.mybatis.generator</groupId>
                  <artifactId>mybatis-generator-core</artifactId>
                  <version>1.3.2</version>
               </dependency>
               
               <!-- 数据库连接池 -->
               <dependency>
                  <groupId>com.mchange</groupId>
                  <artifactId>c3p0</artifactId>
                  <version>0.9.2</version>
               </dependency>
               
               <!-- MySQL驱动 -->
               <dependency>
                  <groupId>mysql</groupId>
                  <artifactId>mysql-connector-java</artifactId>
                  <version>5.1.8</version>
               </dependency>
         </dependencies>
      </plugin>
   </plugins>
</build>

b>创建MyBatis的核心配置文件

c>创建逆向工程的配置文件

文件名必须是: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(奢华尊享版)简洁版只有基础的增删改查功能,而我们平时用的尊享版带有更多的功能,比如说动态sql,拼接sql,条件查询等
   -->
   <context id="DB2Tables" targetRuntime="MyBatis3Simple">
      <!-- 数据库的连接信息 -->
      <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                     connectionURL="jdbc:mysql://localhost:3306/mybatis"
                     userId="root"
                     password="123456">
      </jdbcConnection>
      <!-- javaBean的生成策略-->
      <javaModelGenerator targetPackage="com.atguigu.mybatis.bean"
targetProject=".\src\main\java">
                  <property name="enableSubPackages" value="true" />
                  <property name="trimStrings" value="true" />
      </javaModelGenerator>
      <!-- SQL映射文件的生成策略 -->
      <sqlMapGenerator targetPackage="com.atguigu.mybatis.mapper"
targetProject=".\src\main\resources">
            <property name="enableSubPackages" value="true" />
            </sqlMapGenerator>
      <!-- Mapper接口的生成策略 -->
      <javaClientGenerator type="XMLMAPPER"
      targetPackage="com.atguigu.mybatis.mapper" targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true" />
      </javaClientGenerator>
      <!-- 逆向分析的表 -->
      <!-- tableName设置为*号,可以对应所有表,此时不写domainObjectName -->
      <!-- domainObjectName属性指定生成出来的实体类的类名 -->
      <table tableName="t_emp" domainObjectName="Emp"/>
      <table tableName="t_dept" domainObjectName="Dept"/>
   </context>
</generatorConfiguration>

d>执行MBG插件的generate目标
在这里插入图片描述
双击文件

效果:
在这里插入图片描述

2、QBC查询

@Test
public void testMBG() throws IOException {
   InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
   SqlSession sqlSession = new SqlSessionFactoryBuilder().build(is).openSession(true);
   EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
   EmpExample empExample = new EmpExample();
   //创建条件对象,通过andXXX方法为SQL添加查询添加,每个条件之间是and关系
   empExample.createCriteria().andEnameLike("a").andAgeGreaterThan(20).andDidIsNotNull();
   //将之前添加的条件通过or拼接其他条件
   empExample.or().andSexEqualTo("男");
   List<Emp> list = mapper.selectByExample(empExample);
   for (Emp emp : list) {
      System.out.println(emp);
   }
}

十二、分页插件

1、分页插件使用步骤

a>添加依赖

<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
<dependency>
   <groupId>com.github.pagehelper</groupId>
   <artifactId>pagehelper</artifactId>
   <version>5.2.0</version>
</dependency>

b>配置分页插件

在MyBatis的核心配置文件中配置插件

<plugins>
   <!--设置分页插件-->
   <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>

2、分页插件的使用

MySql中的分页查询

a>在查询功能之前使用PageHelper.startPage(int pageNum, int pageSize)开启分页功能

pageNum:当前页的页码
pageSize:每页显示的条数

b>在查询获取list集合之后,使用PageInfo pageInfo = new PageInfo<>(List list, intnavigatePages)获取分页相关数据

list:分页之后的数据
navigatePages:导航分页的页码数(建议大家写奇数)

c>分页相关数据

PageInfo{

pageNum=8, pageSize=4, size=2, startRow=29, endRow=30, total=30, pages=8,

list=Page{count=true, pageNum=8, pageSize=4, startRow=28, endRow=32, total=30,
pages=8, reasonable=false, pageSizeZero=false},

prePage=7, nextPage=0, isFirstPage=false, isLastPage=true, hasPreviousPage=true,
hasNextPage=false, navigatePages=5, navigateFirstPage4, navigateLastPage8,
navigatepageNums=[4, 5, 6, 7, 8]
}

常用数据:

pageNum:当前页的页码
pageSize:每页显示的条数
size:当前页显示的真实条数
total:总记录数
pages:总页数
prePage:上一页的页码
nextPage:下一页的页码
isFirstPage/isLastPage:是否为第一页/最后一页
hasPreviousPage/hasNextPage:是否存在上一页/下一页
navigatePages:导航分页的页码数
navigatepageNums:导航分页的页码,[1,2,3,4,5]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

真真最可爱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值