zoukankan      html  css  js  c++  java
  • mybatis物理分页的实现(转)

    转:http://dove19900520.iteye.com/blog/1724414

    最近两周一直在学习mybatis,昨天经理让我将mybatis的物理分页整理一下,打成一个jar包供以后调用。结果昨天我整了一天,也没整出个1、2、3来。现在终于写出来了,先记录下来再说,哈哈。

    下面是所有的代码:

    Java代码  收藏代码
    1. package com.xxyd.mybatis.pojo;  
    2.   
    3. import java.io.Serializable;  
    4. /** 
    5.  * 实体类 
    6.  * @author dove 
    7.  * 
    8.  */  
    9. public class TestEntity implements Serializable{  
    10.   
    11.     private static final long serialVersionUID = -5849200248418883686L;  
    12.     private int id ;  
    13.     private String name;  
    14.     private int no;  
    15.     private int sex;  
    16.     private int age;  
    17.     private String count;  
    18.     private String school;  
    19.     private int weight;  
    20.     private int height;  
    21.     private String habbit;  
    22.     private String memo;  
    23.     public int getId() {  
    24.         return id;  
    25.     }  
    26.     public void setId(int id) {  
    27.         this.id = id;  
    28.     }  
    29.     public String getName() {  
    30.         return name;  
    31.     }  
    32.     public void setName(String name) {  
    33.         this.name = name;  
    34.     }  
    35.     public int getNo() {  
    36.         return no;  
    37.     }  
    38.     public void setNo(int no) {  
    39.         this.no = no;  
    40.     }  
    41.     public int getSex() {  
    42.         return sex;  
    43.     }  
    44.     public void setSex(int sex) {  
    45.         this.sex = sex;  
    46.     }  
    47.     public int getAge() {  
    48.         return age;  
    49.     }  
    50.     public void setAge(int age) {  
    51.         this.age = age;  
    52.     }  
    53.     public String getCount() {  
    54.         return count;  
    55.     }  
    56.     public void setCount(String count) {  
    57.         this.count = count;  
    58.     }  
    59.     public String getSchool() {  
    60.         return school;  
    61.     }  
    62.     public void setSchool(String school) {  
    63.         this.school = school;  
    64.     }  
    65.     public int getWeight() {  
    66.         return weight;  
    67.     }  
    68.     public void setWeight(int weight) {  
    69.         this.weight = weight;  
    70.     }  
    71.     public int getHeight() {  
    72.         return height;  
    73.     }  
    74.     public void setHeight(int height) {  
    75.         this.height = height;  
    76.     }  
    77.     public String getHabbit() {  
    78.         return habbit;  
    79.     }  
    80.     public void setHabbit(String habbit) {  
    81.         this.habbit = habbit;  
    82.     }  
    83.     public String getMemo() {  
    84.         return memo;  
    85.     }  
    86.     public void setMemo(String memo) {  
    87.         this.memo = memo;  
    88.     }  
    89.     @Override  
    90.     public String toString() {  
    91.         return "TestEntity [id=" + id + ", name=" + name + ", no=" + no  
    92.                 + ", sex=" + sex + ", age=" + age + ", count=" + count  
    93.                 + ", school=" + school + ", weight=" + weight + ", height="  
    94.                 + height + ", habbit=" + habbit + ", memo=" + memo + "]";  
    95.     }  
    96.       
    97. }  

    2、DAO接口

    Java代码  收藏代码
    1. package com.xxyd.mybatis.dao;  
    2.   
    3. import java.util.List;  
    4.   
    5. import org.apache.ibatis.annotations.Param;  
    6.   
    7. import com.xxyd.mybatis.pojo.TestEntity;  
    8. /** 
    9.  * dao接口 
    10.  * @author dove 
    11.  * 
    12.  */  
    13. public interface TestMapper {  
    14.     public void createTestEntity(TestEntity entity);  
    15.     public List<TestEntity> getTestEntityByPager(@Param("pageNo")int pageNo,@Param("pageSize"int pageSize);  
    16.     public List<TestEntity> getListTestEntity();  
    17.     public int getTotalCount(@Param("pageNo")int pageNo,@Param("pageSize"int pageSize);  
    18.     public void updateTestEntity(TestEntity entity);  
    19.     public void deleteTestEntityById(@Param("id"int id);  
    20. }  

    3、映射文件TestMapper.xml

    Xml代码  收藏代码
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <!DOCTYPE mapper SYSTEM "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >  
    3. <mapper namespace="com.xxyd.mybatis.dao.TestMapper">  
    4.   
    5.     <resultMap type="com.xxyd.mybatis.pojo.TestEntity" id="test_test">  
    6.         <id property="id" column="id" javaType="int" jdbcType="INTEGER"/>  
    7.         <result property="name" column="name" javaType="String" jdbcType="VARCHAR"/>  
    8.         <result property="no" column="no" javaType="int" jdbcType="INTEGER"/>  
    9.         <result property="sex" column="sex" javaType="int" jdbcType="INTEGER"/>  
    10.         <result property="age" column="age" javaType="int" jdbcType="INTEGER"/>  
    11.         <result property="count" column="count" javaType="String" jdbcType="VARCHAR"/>  
    12.         <result property="school" column="school" javaType="String" jdbcType="VARCHAR"/>  
    13.         <result property="weight" column="weight" javaType="int" jdbcType="INTEGER"/>  
    14.         <result property="height" column="height" javaType="int" jdbcType="INTEGER"/>  
    15.         <result property="habbit" column="habbit" javaType="String" jdbcType="VARCHAR"/>  
    16.         <result property="memo" column="memo" javaType="String" jdbcType="VARCHAR"/>  
    17.     </resultMap>  
    18.       
    19.     <insert id="createTestEntity" useGeneratedKeys="true" parameterType="com.xxyd.mybatis.pojo.TestEntity">  
    20.         insert into test_test(name,no,sex, age,count,school,weight,height,habbit,memo)   
    21.         values(#{name},#{no},#{sex},#{age},#{count},#{school},#{weight},#{height},#{habbit},#{memo});  
    22.     </insert>  
    23.       
    24.     <select id="getTestEntityByPager" resultMap="test_test">  
    25.         select id,name,no,sex, age,count,school,weight,height,habbit,memo  
    26.             from test_test   
    27.             limit #{pageNo, jdbcType=INTEGER} , #{pageSize, jdbcType=INTEGER}  
    28.     </select>  
    29.       
    30.     <select id="getListTestEntity" resultMap="test_test">  
    31.         select id,name,no,sex, age,count,school,weight,height,habbit,memo  
    32.             from test_test   
    33.     </select>  
    34.       
    35.     <select id="getTotalCount" resultType="int">  
    36.         select count(sub.id) from  
    37.             (select test.id as id from test_test test  
    38.                 limit #{pageNo, jdbcType=INTEGER} , #{pageSize, jdbcType=INTEGER}) as sub  
    39.     </select>  
    40.       
    41.     <update id="updateTestEntity" parameterType="com.xxyd.mybatis.pojo.TestEntity">  
    42.         update test_test   
    43.         <set>  
    44.             <if test="name != null and name != ''">  
    45.                 name = #{name , jdbcType=VARCHAR},  
    46.             </if>  
    47.             <if test="no != null and no != ''">  
    48.                 no = #{no , jdbcType=INTEGER},  
    49.             </if>  
    50.             <if test="sex != null and sex != ''">  
    51.                 sex = #{sex , jdbcType=INTEGER},  
    52.             </if>  
    53.             <if test="age != null and age != ''">  
    54.                 age = #{age , jdbcType=INTEGER},  
    55.             </if>  
    56.             <if test="count != null and count != ''">  
    57.                 count = #{count , jdbcType=VARCHAR},  
    58.             </if>  
    59.             <if test="school != null and school != ''">  
    60.                 school = #{school , jdbcType=VARCHAR},  
    61.             </if>  
    62.             <if test="weight != null and weight != ''">  
    63.                 weight = #{weight , jdbcType=INTEGER},  
    64.             </if>  
    65.             <if test="height != null and height != ''">  
    66.                 height = #{height , jdbcType=INTEGER},  
    67.             </if>  
    68.             <if test="habbit != null and habbit != ''">  
    69.                 habbit = #{habbit , jdbcType=VARCHAR},  
    70.             </if>  
    71.             <if test="memo != null and memo != ''">  
    72.                 memo = #{memo , jdbcType=VARCHAR},  
    73.             </if>  
    74.         </set>  
    75.         where id = #{id ,jdbcType=INTEGER}  
    76.     </update>  
    77.       
    78.     <delete id="deleteTestEntityById" parameterType="int">  
    79.         delete from test_test where id = #{id}  
    80.     </delete>  
    81.       
    82. </mapper>  

    4、mybatis主配置文件mybatis-config.xml

    Xml代码  收藏代码
    1. <?xml version="1.0" encoding="UTF-8" ?>  
    2. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">  
    3. <configuration>  
    4.     <!-- 配置数据库方言  目前只有mysql和oracle两种-->  
    5.     <properties>  
    6.         <property name="dialect" value="mysql"/>  
    7.     </properties>  
    8.       
    9.     <!-- 配置mysql分页拦截器 start -->  
    10.     <!-- com.xxyd.mybatis.interceptor.PaginationInterceptor 来自于jar包mybatis-pager-1.0.0.jar -->  
    11.     <plugins>  
    12.         <plugin interceptor="com.xxyd.mybatis.interceptor.PaginationInterceptor"></plugin>  
    13.     </plugins>  
    14.   
    15.     <!-- 映射文件 -->  
    16.     <mappers>  
    17.         <mapper resource="com/xxyd/mybatis/mapper/TestMapper.xml" />  
    18.     </mappers>  
    19. </configuration>        
    20.               

    6、jdbc.properties文件

    Xml代码  收藏代码
    1. driverClass=com.mysql.jdbc.Driver  
    2. url=jdbc\:mysql\://127.0.0.1\:3306/student_manager  
    3. username=root  
    4. password=123456  

    7、spring配置文件部分配置

    Xml代码  收藏代码
    1. <?xml version="1.0" encoding="UTF-8"?>  
    2. <beans xmlns="http://www.springframework.org/schema/beans"  
    3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"  
    4.     xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx"  
    5.     xmlns:context="http://www.springframework.org/schema/context"  
    6.     xsi:schemaLocation="     
    7.                 http://www.springframework.org/schema/beans   
    8.                 http://www.springframework.org/schema/beans/spring-beans-2.5.xsd     
    9.                 http://www.springframework.org/schema/aop   
    10.                 http://www.springframework.org/schema/aop/spring-aop-2.5.xsd     
    11.                 http://www.springframework.org/schema/tx   
    12.                 http://www.springframework.org/schema/tx/spring-tx-2.5.xsd   
    13.                 http://www.springframework.org/schema/context   
    14.                 http://www.springframework.org/schema/context/spring-context.xsd">  
    15.   
    16.     <!-- Properties文件读取配置,base的properties -->  
    17.     <context:property-placeholder location="classpath:jdbc.properties" />  
    18.   
    19.     <bean id="dataSource"  
    20.         class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
    21.         <property name="driverClassName" value="${driverClass}" />  
    22.         <property name="url" value="${url}" />  
    23.         <property name="username" value="${username}"></property>  
    24.         <property name="password" value="${password}"></property>  
    25.     </bean>  
    26.   
    27.     <bean id="transactionManager"  
    28.         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
    29.         <property name="dataSource" ref="dataSource" />  
    30.     </bean>  
    31.   
    32.     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
    33.         <property name="configLocation" value="classpath:mybatis-config.xml" />  
    34.         <property name="dataSource" ref="dataSource" />  
    35.     </bean>  
    36.       
    37.     <!-- 测试用例start -->  
    38.     <bean id="TestMapperTest" class="com.xxyd.mybatis.test.TestMapperTest">  
    39.         <property name="sessionFactory" ref="sqlSessionFactory"/>  
    40.     </bean>  
    41.     <!-- 测试用例end -->  
    42.       
    43.   
    44.     <!-- mapper bean -->  
    45.     <bean id="TestMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">  
    46.         <property name="mapperInterface" value="com.xxyd.mybatis.dao.TestMapper" />  
    47.         <property name="sqlSessionFactory" ref="sqlSessionFactory" />  
    48.     </bean>  
    49.   
    50. </beans>    

     7、最后,测试类: 

    Java代码  收藏代码
    1. package com.xxyd.mybatis.test;  
    2.   
    3. import java.util.List;  
    4.   
    5. import org.apache.ibatis.session.RowBounds;  
    6. import org.apache.ibatis.session.SqlSession;  
    7. import org.apache.ibatis.session.SqlSessionFactory;  
    8. import org.apache.ibatis.session.SqlSessionFactoryBuilder;  
    9. import org.junit.Test;  
    10. import org.springframework.context.support.ClassPathXmlApplicationContext;  
    11.   
    12. import com.xxyd.mybatis.pojo.TestEntity;  
    13.   
    14. public class TestMapperTest {  
    15.   
    16.     //private SqlSessionFactory sessionFactory;  
    17.     private static SqlSessionFactoryBuilder builder;  
    18.     private static SqlSessionFactory sessionFactory;  
    19.     static {  
    20.         builder = new SqlSessionFactoryBuilder();  
    21.         sessionFactory = builder.build(Thread.currentThread()  
    22.                 .getContextClassLoader()  
    23.                 .getResourceAsStream("mybatis-config.xml"));  
    24.     }  
    25.     /** 
    26.      * @param args 
    27.      */  
    28.     public static void main(String[] args) {  
    29.         ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");  
    30.         TestMapperTest TestMapperTest = (TestMapperTest)ctx.getBean("TestMapperTest");  
    31.         TestMapperTest.getList();  
    32.           
    33.     }  
    34.       
    35.     @Test  
    36.     public void getList(){  
    37.         SqlSession sqlSession = sessionFactory.openSession();  
    38.         //TestEntity entity = new TestEntity();  
    39.         List<TestEntity> list = sqlSession.selectList("com.xxyd.mybatis.dao.TestMapper.getListTestEntity", TestEntity.classnew RowBounds(0200));  
    40.         sqlSession.commit();  
    41.         sqlSession.close();  
    42.         for (TestEntity testEntity : list) {  
    43.             System.out.println(testEntity.toString());  
    44.         }  
    45.     }  
    46.       
    47.     //public SqlSessionFactory getSessionFactory() {  
    48.     //  return sessionFactory;  
    49.     //}  
    50.     //public void setSessionFactory(SqlSessionFactory sessionFactory) {  
    51.     //  this.sessionFactory = sessionFactory;  
    52.     //}  
    53. }  

     能够成功运行的前提是,你已经将mybatis+spring的运行环境搭建好了,并且将mybatis-pager-1.0.0.jar也放置到classpath下。之后,直接运行测试类就可以了。

    注意1:mybatis-pager-1.0.0.jar该包就是浪费我昨天一整天也没整出来的分页jar包,里面目前只适用于mysql和oracle两种数据库使用,其他的数据库还在研究中。

    注意2:List<TestEntity> list = sqlSession.selectList("com.xxyd.mybatis.dao.TestMapper.getListTestEntity", TestEntity.class, new RowBounds(0, 200));
    第一个参数标准写法是TestMapper.xml的名称空间+select的对应id(建议sql映射文件中的sql语句结尾不要有分号);第二个参数是:实体类,当然也可以使字符串,只有是Object类型的就可以,目前还没发现什么异常,或许我研究的较为浅显的原因;第三个参数则是需要分页的数据。

  • 相关阅读:
    tomcat配置环境变量
    Java实现简单的正则表达式匹配
    vi编辑器用法
    MyEclipse中自定义maven命令(添加maven 命令)
    dos窗口编译*.java文件 解决 java “错误:编码GBK 的不可映射字符”
    如何循环枚举类型
    Java枚举的小用法
    Java读取maven目录下的*.properties配置文件
    用MyEclipse将Maven Dependencies中的jar包导出
    MD5加密与base64编码
  • 原文地址:https://www.cnblogs.com/lhj588/p/2822225.html
Copyright © 2011-2022 走看看