MyBatis中实现动态的SQL语句,分页以及mybatis的常用的配置

1.动态SQL:在SQL语句中加入流程控制。比如加入ifforeach等。
 重点掌握if语句:

 案例1


     
     
     
     
  1. "updateItem" parameterType= "com.gxa.bj.modle.UserInfo">
  2. update UserInfo set
  3. < if test= "userName!=null">
  4. userName=#{userName},
  5. if>
  6. < if test= "userPwd!=null">
  7. userPwd=#{userPwd},
  8. if>
  9. < if test= "userEmail!=null">
  10. userEmail=#{userEmail},
  11. if>
  12. userId=#{userId} where userId=#{userId}

实现列:


     
     
     
     
  1. UserInfo u= new UserInfo();
  2. u.setUserId( 7);
  3. u.setUserName( "李大名");
  4. u.setUserPwd( "123");
  5. u.setUserEmail( "[email protected]");
  6. userMapper.updateItem(u);
  7. sqlSessin.commit();
  8. System.out.println( "修改成功");

案列2:


     
     
     
     

实现列:



     
     
     
     
  1. u.setUserName( "小白");
  2. List list= userMapper.getList(u);
  3. for(UserInfo u1:list){
  4. System.out.println( "用户信息:"+u1.getUserPwd());
  5. }

2.分页的实现?

分页的时候考虑的问题:

分页的大小,分页的索引。

比如:分页的大小为10,分页的起始索引为1(索引从1开始)

第一页:110.    起始行号: (页的索引-1*分页大小+1

                   结束行号: 页的索引*分页大小

 

实现方案:

1)比如针对UserInfo的实体对象做分页处理,那么先创建一个分页的实体类,该类继承自UserInfo package com.gxa.bj.modle


     
     
     
     
  1. package com.gxa.bj.modle;
  2. public class UserInfoPage extends UserInfo{
  3. private int pageIndex; //分页的索引
  4. private int pageSize; //分页的大小
  5. private int startNum; //分页起始行
  6. private int endNum; //分页结束行
  7. public int getPageIndex() {
  8. return pageIndex;
  9. }
  10. public void setPageIndex(int pageIndex) {
  11. this.pageIndex = pageIndex;
  12. }
  13. public int getPageSize() {
  14. return pageSize;
  15. }
  16. public void setPageSize(int pageSize) {
  17. this.pageSize = pageSize;
  18. }
  19. public int getStartNum() {
  20. return startNum;
  21. }
  22. public void setStartNum(int startNum) {
  23. this.startNum = startNum;
  24. }
  25. public int getEndNum() {
  26. return endNum;
  27. }
  28. public void setEndNum(int endNum) {
  29. this.endNum = endNum;
  30. }
  31. }

2)在接口只陪你过定义一个方法:

public List getListByPage(UserInfoPage upage);
      
      
      
      

3)在Mapper文件中编写SQL语句:


      
      
      
      


4)测试代码:

 

      
      
      
      
  1. UserInfoPage u1= new UserInfoPage();
  2. u1.setUserName( "userName");
  3. u1.setPageIndex( 2); //查询第几页
  4. u1.setPageSize( 2); //分布每页的条数
  5. int startNum=(u1.getPageIndex()- 1)*u1.getPageSize()+ 1;
  6. int endNum=u1.getPageIndex()*u1.getPageSize();
  7. u1.setStartNum(startNum);
  8. u1.setEndNum(endNum);
  9. List list=userMapper.getListByPage(u1);
  10. for(UserInfo t :list){
  11. System.out.println( "id:"+t.getUserId());
  12. }






































你可能感兴趣的:(MyBatis中实现动态的SQL语句,分页以及mybatis的常用的配置)