接着上篇博客接下来我们要写的是MyBatis分页
MyBatis分页
首先我们导入pom依赖
<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.2</version> </dependency>
然后配置我们的Mybatis.cfg.xml配置拦截器
<plugins> <!-- 配置分页插件PageHelper, 4.0.0以后的版本支持自动识别使用的数据库 --> <plugin interceptor="com.github.pagehelper.PageInterceptor"> </plugin> </plugins>
BookMapper.xml
<select id="listPager" resultType="java.util.Map" parameterType="java.util.Map"> select * from t_mvc_book where bname like concat(concat('%',#{bname}),'%') </select>
Mapper层
List<Map> listPager(Map map);
Servlet层
List<Map> listPager(Map map, PageBean pageBean);
测试
@Override public List<Map> listPager(Map map, PageBean pageBean) { if(pageBean != null && pageBean.isPagination()){ PageHelper.startPage(pageBean.getPage(),pageBean.getRows()); } List<Map> list = bookMapper.listPager(map); if(pageBean != null && pageBean.isPagination()){ PageInfo pageInfo = new PageInfo(list); System.out.println("页码:"+pageInfo.getPageNum()); System.out.println("页大小:"+pageInfo.getPageSize()); System.out.println("总记录:"+pageInfo.getTotal()); pageBean.setTotal(pageInfo.getTotal()+""); } return list; }
测试结果
特殊字符
方案一:使用转义字符
转义字符:
转义字符是一种特殊的字符常量。转义字符以反斜线""开头,后跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符。例如,在前面各例题printf函数的格式串中用到的“\n”就是一个转义字符,其意义是“回车换行”。转义字符主要用来表示那些用一般字符不便于表示的控制代码。
不同的语言有不同的转义符。如HTML转义符、java 转义符、xml 转义符、 oracle 转义符、sql 转义符 、sqlserver 转义符、php 转义符、asp 转义符、vb转义符、 javascript 转义符等等,还有网址中的百分号。
例如:
HTML的< >&"©分别是 < > & " © 的转义字符
XML只有5个转义符: < >& " ',分别对应 < > & " ’
转义符使用场景:
例:
HTML中< > &等字符是有特殊含义的,其中 < > 用于链接签,&用于转义。
Mybatis中< > 等字符在xml解析中是会报错的。
方案二:使用xml的![CDATA[ ]]语法
<![CDATA[ ]]>是xml语法,在<![CDATA[ ]]>内部的所有内容都会被解析器忽略,不进行转义。所以在xml中这是一种通用方案。
特殊情况:
不能直接把mybatis中的逻辑判断全部包住,因为还有标签有使用特殊字符<>,所以尽可能缩小范围,写在条件中:
<if test="">
<![CDATA[
create_time > #{start} and createTime < #{end}
]]>
</if>