MyBatis分页查询

实体类

  • 实体类的属性都要用元类型的包装类,如
    private Integer userId;

    DAO

  • 普通的dao接口应该继承IEntity接口不是实现,是继承
  • 接口com.hundsun.jresplus.dao.common.func.IEntityDAO定义了基础的增删改取查询功能,普通DAO接口应继承该接口。
  • IEntityDAO约束两个泛型‘T’和‘P’。< T >表示实体类;< P >表示查询参数,应包含一些分页信息,查询参数还应包含其他查询条件,排序方式等信息.如
    1
    2
    public interface IParticipationDAO
    extends IEntityDAO<Participation, ParticipationQry>

映射文件

  • 文件名要和DAO接口一致
  • <mapper>结点下定义一个id=”BaseResultMap”的<resultMap>的结点,该映射内容用来定义实体与数据表的对应关系。
  • Mybatis需要配置<insert/><update/><delete/><select/>等操作节点来实现操作功能,id属性需要与DAO接口定义的方法名一致。
  • 最上面对表的各个属性的映射一定要写正确了

t2 sdk

cep和t2sdk是差不多的
在他那层看到的是包,是二进制的东西
但是写java的希望看到对象
cep本身有路由的功能,一个java版本的server
cep里面是封装过的

会拦截带有(ListPage)字样的sql,然后会根据在配置文件里设置的数据库类型,往后面添加分页的sql语句,如mysql就会自动往后面加上limit 10,5,代表从第十条开始,一共五条

1
2
3
4
<!-- 分页处理拦截器,会去拦截带有ListPage的sql语句?-->
<bean id="paginationInterceptor" class="com.hundsun.jresplus.dao.mybatis3.interceptor.PaginationInterceptor">
<property name="pageMapper" value=".*ListPage.*"/>
</bean>

关键

Qry查询参数类是关键,页面上只要传个start过来,会自动封装成ParticipationQry然后传给远程的service,然后去调用dao完成相应的功能然后返回,可以自定义一个pageUtil类,把页面的那些信息也都放进去,通过计算得到LastPage、currentPage等等然后一起把pageUtil返回到页面上,页面上直接去获取这些值,而不是在页面上进行计算。