Mybatis扩展
1.批量扫描mapper
在之前每创建一个mapper,就需要在mybatis-config.xml 文件中,注册该mapper。
<mappers>
<mapper resource="mapper/EmployeeMapper.xml"/>
</mappers>
可以在mappers标签中使用package标签,进行包扫描
<mappers>
<package name="com.ztone.mapper"/>
</mappers>
这样每次在com.ztone.mapper 包下创建mapper就不用注册了
这种方式的要求:
-
mapper 的xml文件和接口文件命名必须xiangtong
-
最终打包后的位置要一致,也就是都在 com.ztone.mapper 下,想要保证这点有两种方式
-
将xml文件放在java下的包中,与接口放在一个地方,但是需要在mybatis-config中设置maven的打包配置,否则xml文件不会打包
<build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.*</include> </includes> </resource> </resources> </build>
-
第二种方式就是在 resources文件夹下创建与 接口存放位置相同的包,也就是com.ztone.mapper
这里需要注意:在resources文件下创建文件夹,分层时不能用 ” . “ 分隔,需要用 ” / “ 分隔
-
2.PageHelper分页插件
在sql中进行分页,需要用limit 关键字
select * from user limit 0,2;
从第0个开始查询,每一页展示两个
使用插件,不需要自己写 limit,要求是不能用 ” ; “ 结尾,因为limit会加在分号后面,导致sql错误
步骤:
-
引入pagehelper 依赖
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.11</version> </dependency>
-
在mybatis-config.xml 文件中配置分页插件
<plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor"> <property name="helperDialect" value="mysql"/> </plugin> </plugins>
-
使用
先设置分页数据调用PageHelper的 startPage() 方法
然后执行查询语句,返回结果后,将查询数据封装到一个PageInfo的分页实体类中
public void test_02(){ EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class); PageHelper.startPage(2,2); List<Employee> employees = mapper.queryAll(); PageInfo<Employee> pageInfo = new PageInfo<>(employees); //当前页的数据 List<Employee> list = pageInfo.getList(); //获取总页数 int pages = pageInfo.getPages(); //获取总条数 long total = pageInfo.getTotal(); }
需要注意的是:不能将两条查询装到一个 分页区
3.逆向工程
自动生成单表的实体类、接口文件、接口的xml文件
用到的 插件是 MybatisX