456、Java框架110 -【MyBatis - 分頁】 2020.12.28
阿新 • • 發佈:2020-12-29
目錄
0、增加100條catgory資料
為了觀察分頁查詢的效果,把分類表裡的資料都刪除掉,然後新增100個數據
package com.how2java; import java.io.IOException; import java.io.InputStream; import java.util.List; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import com.how2java.pojo.Category; public class TestMybatis { public static void main(String[] args) throws IOException { String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); SqlSession session = sqlSessionFactory.openSession(); List<Category> cs = session.selectList("listCategory"); for (Category c : cs) { session.delete("deleteCategory", c); } for (int i = 0; i < 100; i++) { Category c = new Category(); c.setName("category name " + i); session.insert("addCategory", c); } List<Category> cs2 = session.selectList("listCategory"); for (Category c : cs2) { System.out.println(c.getName()); } session.commit(); session.close(); } }
1、修改Category.xml
新增limit
<?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"> <mapper namespace="com.how2java.pojo"> <insert id="addCategory" parameterType="Category" > insert into category_ ( name ) values (#{name}) </insert> <delete id="deleteCategory" parameterType="Category" > delete from category_ where id= #{id} </delete> <select id="getCategory" parameterType="_int" resultType="Category"> select * from category_ where id= #{id} </select> <update id="updateCategory" parameterType="Category" > update category_ set name=#{name} where id=#{id} </update> <select id="listCategory" resultType="Category"> select * from category_ <if test="start!=null and count!=null"> limit #{start},#{count} </if> </select> </mapper>
2、測試
用註解方式再做一遍
注:start是指從第0個開始,如果是第二頁,那麼就是第5個開始。
注:count引數是指每頁有5條資料
- CategoryMapper.java
package com.how2java.mapper; import java.util.List; import org.apache.ibatis.annotations.Many; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Result; import org.apache.ibatis.annotations.Results; import org.apache.ibatis.annotations.Select; import com.how2java.pojo.Category; public interface CategoryMapper { public List<Category> list(); public List<Category> listByPage(@Param("start") int start, @Param("count")int count); }
- TestMybatis.java
package com.how2java;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.how2java.mapper.CategoryMapper;
import com.how2java.pojo.Category;
public class TestMybatis {
public static void main(String[] args) throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();
// xmlWay(session);
annotationWay(session);
session.commit();
session.close();
}
private static void xmlWay(SqlSession session) {
Map<String,Object> params = new HashMap<>();
params.put("start", 0);
params.put("count", 5);
List<Category> cs =session.selectList("listCategory", params);
for (Category c : cs) {
System.out.println(c);
}
}
private static void annotationWay(SqlSession session) {
CategoryMapper mapper = session.getMapper(CategoryMapper.class);
List<Category> cs =mapper.listByPage(0, 5);
for (Category c : cs) {
System.out.println(c);
}
}
}
3、註解方式
- CategoryMapper.java
package com.how2java.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Many;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import com.how2java.pojo.Category;
public interface CategoryMapper {
@Select(" select * from category_ ")
@Results({@Result(property = "products", javaType = List.class, column = "id",
many = @Many(select = "com.how2java.mapper.ProductMapper.listByCategory"))})
public List<Category> list();
@Select(" select * from category_ limit #{start},#{count}")
public List<Category> listByPage(@Param("start") int start, @Param("count")int count);
}
- TestMybatis.java
package com.how2java;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.how2java.mapper.CategoryMapper;
import com.how2java.pojo.Category;
public class TestMybatis {
public static void main(String[] args) throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();
CategoryMapper mapper = session.getMapper(CategoryMapper.class);
List<Category> cs =mapper.listByPage(0, 5);
for (Category c : cs) {
System.out.println(c);
}
session.commit();
session.close();
}
}