MyBatis框架(6.0)
数据分页查询
·以内容替换的方式设置的参数:${替换变量};
·传递的是操作的数值:#{内容}。
SELECT * FROM WHERE 字段 LIKE ? LIMIT ?,?;
SELECT * FROM WHERE ${ } LIKE #{ } LIMIT #{ },#{ };
通过Mybatis进行该操作,那么就可以接受这样的一组数据,使用map集合完成。
范例:实现分页查询
1,配置文件编写New.xml
<!-- Map集合的特点是根据key取得对应的value数据,Mybatis里面如果发现有多个参数就传递Map -->
<select id="findAllSplit" resultMap="NewsResultMap" parameterType="java.util.Map">
SELECT nid,title,pub_date FROM news
WHERE ${column} LIKE #{keyWord} LIMIT #{start},#{lineSize} ;
</select>
2,编写测试文件:
package cn.mldn.test;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import cn.mldn.util.MyBatisSessionFactory;
import cn.mldn.vo.News;
public class TestNewsFindSplit {
public static void main(String[] args) throws Exception {
String column = "title";
String keyWord = "%%";
int currentPage = 1;
int lineSize = 5;
Map<String, Object> map = new HashMap<String, Object>();
map.put("column", column);
map.put("keyWord", keyWord);
map.put("start", (currentPage - 1) * lineSize);
map.put("lineSize", lineSize);
List<News> all = MyBatisSessionFactory.getSession().selectList(
"cn.mldn.mapping.NewsNS.findAllSplit", map); // 没有强制转换
System.out.println(all);
MyBatisSessionFactory.close();
}
}
实现正常的分页处理,还需要统计出相应的数据行数;
范例:统计数据行数
1,配置文件编写New.xml
<select id="getAllCountSplit" parameterType="java.util.Map" resultType="int">
SELECT COUNT(*) FROM news WHERE ${column} LIKE #{keyWord} ;
</select>
2,编写测试文件:
package cn.mldn.test;
import java.util.HashMap;
import java.util.Map;
import cn.mldn.util.MyBatisSessionFactory;
public class TestNewsGetSplitCount {
public static void main(String[] args) throws Exception {
String column = "title";
String keyWord = "%%";
Map<String, Object> map = new HashMap<String, Object>();
map.put("column", column);
map.put("keyWord", keyWord);
int count = MyBatisSessionFactory.getSession().selectOne(
"cn.mldn.mapping.NewsNS.getAllCountSplit", map); // 没有强制转换
System.out.println(count);
MyBatisSessionFactory.close();
}
}
代码展示:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 设置命名空间,可以与不同表的同类型操作进行区分,使用时以“空间名称.id”的方式调用 -->
<mapper namespace="cn.mldn.mapping.NewsNS">
<!-- 结果转换映射,一般都会在查询的时候使用 -->
<resultMap type="News" id="NewsResultMap">
<id property="nid" column="nid"/>
<result property="title" column="title"/>
<result property="pubdate" column="pub_date"/>
</resultMap>
<!-- Map集合的特点是根据key取得对应的value数据,Mybatis里面如果发现有多个参数就传递Map -->
<select id="findAllSplit" resultMap="NewsResultMap" parameterType="java.util.Map">
SELECT nid,title,pub_date FROM news
WHERE ${column} LIKE #{keyWord} LIMIT #{start},#{lineSize} ;
</select>
<select id="getAllCountSplit" parameterType="java.util.Map" resultType="int">
SELECT COUNT(*) FROM news WHERE ${column} LIKE #{keyWord} ;
</select>
</mapper>