mybatis常用条件查询总结(迭代一)

目录

1.mybatis中大于等于小于等于的写法

2.mybatis动态查询条件组装

3.mybatis批量条件

4.mybatis时间查询实现分页总结

1.mybatis中大于等于小于等于的写法

第一种写法(1):

原符号       <        <=      >       >=       &        '        "
替换符号    <    <=   >    >=   &   '  "
例如:sql如下:
create_date_time >= #{startTime} and  create_date_time <= #{endTime}

第二种写法(2):

大于等于
= ]]>
小于等于

例如:sql如下:
create_date_time = ]]> #{startTime} and  create_date_time  #{endTime}

2.mybatis动态查询条件组装如下:

   
     

3.mybatis批量条件

在Mybatis的xml配置中使用集合,主要是用到了foreach动态语句。foreach元素的属性主要有 item,index,collection,open,separator,close。item表示集合中每一个元素进行迭代时的别名,index指定一个名字,用于表示在迭代过程中,每次迭代到的位置,open表示该语句以什么开始,separator表示在每次进行迭代之间以什么符号作为分隔符,close表示以什么结束。
说明:以下示例关于MySQL数据库。由于**传入的参数是多个**,因此把它们封装成一个Map了,当然单参数也可以用Map。.xml文件的部分代码如下:
 update cx_customer_message set MODIFYTIME = SYSDATE() where MEMBERID = #{memberId, jdbcType=VARCHAR}  and MESSAGE_CLASSIFY = #{messageClassify, jdbcType=VARCHAR}  and MESSAGE_CODE in  #{item,jdbcType=VARCHAR}  


MessageMapper.Java
public interface MessageMapper{ //更新 public int updateMessage(Map message);}

MessageManager.java
public interface MessageManager { public int updateMessage(MessageReq messageReq); }

MessageManagerImpl.java
@Componentpublic class MessageManagerImpl implements MessageManager { @Autowired private MessageMapper messageMapper; @Override public int updateMessage(MessageReq messageReq) { int affectRows; Map message= new HashMap(); message.put("memberId", messageReq.getMemberId()); message.put("messageClassify",messageReq.getMessageClassify()); message.put("messageCode", messageReq.getMessageCode()); affectRows = messageMapper.updateDefualtMessage(message); return affectRows; } }

![](http://static.blog.csdn.net/images/save_snippets.png)

collection属性是必须指定的,在不同情况下该属性的值是不一样的:
如上述例子,传入的参数是多个时,collection属性值为传入List或array在**map里面的key**;传入的是单参数且参数类型是List时,collection属性值为list;传入的是单参数且参数类型array时,collection的属性值为array。

3.1mybatis批量插入

1. 在接口UserMapper中添加批量增加方法。

**[java]** [view plain](http://blog.csdn.net/mahoking/article/details/46811865#) [copy](http://blog.csdn.net/mahoking/article/details/46811865#)
 [print](http://blog.csdn.net/mahoking/article/details/46811865#)[?](http://blog.csdn.net/mahoking/article/details/46811865#)

/** 
    * 批量增加操作 
    * @param users 
    */  
   public void batchInsertUsers(List users);  

2.在User.xml中添加批量增加操作的配置。
**[html]** [view plain](http://blog.csdn.net/mahoking/article/details/46811865#) [copy](http://blog.csdn.net/mahoking/article/details/46811865#)
 [print](http://blog.csdn.net/mahoking/article/details/46811865#)[?](http://blog.csdn.net/mahoking/article/details/46811865#)

  
      
        insert into mhc_user(userName,password) values  
          
            (#{item.userName},#{item.password})  
          
      

       由于批量增加的方法中参数为List,所以parameterType的值为[Java](http://lib.csdn.net/base/java).util.List。
3. 创建批量操作的工具类BatchDataUtils,编写批量增加方法。
**[java]** [view plain](http://blog.csdn.net/mahoking/article/details/46811865#) [copy](http://blog.csdn.net/mahoking/article/details/46811865#)
 [print](http://blog.csdn.net/mahoking/article/details/46811865#)[?](http://blog.csdn.net/mahoking/article/details/46811865#)

/** 
     * 批量增加操作 
     * @param users 
     */  
    public static void batchInsertUsers(List users){  
          
        SqlSessionFactory ssf = MyBatisUtil.getSqlSessionFactory();  
        SqlSession session = ssf.openSession();  
          
        try {  
            UserMapper userMapper = session.getMapper(UserMapper.class);  
            userMapper.batchInsertUsers(users);  
            session.commit();  
        } catch (Exception e) {  
            e.printStackTrace();  
        } finally {  
            MyBatisUtil.closeSession(session);  
        }  
    }  

3.2批量删除条件

**批量删除操作步骤**
1. 在接口UserMapper中添加删除增加方法。
**[java]** [view plain](http://blog.csdn.net/mahoking/article/details/46811865#) [copy](http://blog.csdn.net/mahoking/article/details/46811865#)
 [print](http://blog.csdn.net/mahoking/article/details/46811865#)[?](http://blog.csdn.net/mahoking/article/details/46811865#)

/** 
     * 批量删除操作 
     * @param ids 
     */  
    public void batchDeleteUsers(List ids);  

2.在User.xml中添加批量增加操作的配置。
**[html]** [view plain](http://blog.csdn.net/mahoking/article/details/46811865#) [copy](http://blog.csdn.net/mahoking/article/details/46811865#)
 [print](http://blog.csdn.net/mahoking/article/details/46811865#)[?](http://blog.csdn.net/mahoking/article/details/46811865#)

  
      
        delete from mhc_user where id in  
          
            #{item}  
          
      

由于批量删除的方法中参数为List,所以parameterType的值为java.util.List。
3. 在批量操作的工具类BatchDataUtils中编写批量删除方法。
**[java]** [view plain](http://blog.csdn.net/mahoking/article/details/46811865#) [copy](http://blog.csdn.net/mahoking/article/details/46811865#)
 [print](http://blog.csdn.net/mahoking/article/details/46811865#)[?](http://blog.csdn.net/mahoking/article/details/46811865#)

/** 
     * 批量删除操作 
     * @param ids 
     */  
    public static void batchDeleteUsers(List ids){  
        SqlSessionFactory ssf = MyBatisUtil.getSqlSessionFactory();  
        SqlSession session = ssf.openSession();  
          
        try {  
            UserMapper userMapper = session.getMapper(UserMapper.class);  
            userMapper.batchDeleteUsers(ids);  
            session.commit();  
        } catch (Exception e) {  
            e.printStackTrace();  
        } finally {  
            MyBatisUtil.closeSession(session);  
        }  
} 

3.3批量查询操作步骤

1. 在接口UserMapper中添加批量查询方法。
**[java]** [view plain](http://blog.csdn.net/mahoking/article/details/46811865#) [copy](http://blog.csdn.net/mahoking/article/details/46811865#)
 [print](http://blog.csdn.net/mahoking/article/details/46811865#)[?](http://blog.csdn.net/mahoking/article/details/46811865#)

/** 
    * 批量查询操作  
    * @param ids 
    * @return 
    */  
    public List batchSelectUsers(List ids);  

2.在User.xml中添加批量查询操作的配置。
**[html]** [view plain](http://blog.csdn.net/mahoking/article/details/46811865#) [copy](http://blog.csdn.net/mahoking/article/details/46811865#)
 [print](http://blog.csdn.net/mahoking/article/details/46811865#)[?](http://blog.csdn.net/mahoking/article/details/46811865#)

  
      

由于批量查询的方法的返回为List,所以resultType的值为User,即com.mahaochen.mybatis.domain.User。详见configuration.xml中。
**[html]** [view plain](http://blog.csdn.net/mahoking/article/details/46811865#) [copy](http://blog.csdn.net/mahoking/article/details/46811865#)
 [print](http://blog.csdn.net/mahoking/article/details/46811865#)[?](http://blog.csdn.net/mahoking/article/details/46811865#)

  
          
          
  

3. 创建批量操作的工具类BatchDataUtils,编写批量查询方法。

**[java]** [view plain](http://blog.csdn.net/mahoking/article/details/46811865#) [copy](http://blog.csdn.net/mahoking/article/details/46811865#)
 [print](http://blog.csdn.net/mahoking/article/details/46811865#)[?](http://blog.csdn.net/mahoking/article/details/46811865#)

/** 
    * 批量查询操作  
    * @param ids 
    * @return 
    */  
    public static List batchSelectUsers(List ids){  
        SqlSessionFactory ssf = MyBatisUtil.getSqlSessionFactory();  
        SqlSession session = ssf.openSession();  
        List users = null;  
        try {  
            UserMapper userMapper = session.getMapper(UserMapper.class);  
            users = userMapper.batchSelectUsers(ids);  
        } catch (Exception e) {  
            e.printStackTrace();  
        } finally {  
            MyBatisUtil.closeSession(session);  
        }  
        return users;  
    }  
}  

3.4批量更细操作步骤

1. 在接口UserMapper中添加批量增加方法。
**[java]** [view plain](http://blog.csdn.net/mahoking/article/details/46811865#) [copy](http://blog.csdn.net/mahoking/article/details/46811865#)
 [print](http://blog.csdn.net/mahoking/article/details/46811865#)[?](http://blog.csdn.net/mahoking/article/details/46811865#)

/** 
     * 批量更新操作  
     * @param ids 
     */  
    public void batchUpdateUsers(List users);  

2.在User.xml中添加批量更新操作的配置。
**[html]** [view plain](http://blog.csdn.net/mahoking/article/details/46811865#) [copy](http://blog.csdn.net/mahoking/article/details/46811865#)
 [print](http://blog.csdn.net/mahoking/article/details/46811865#)[?](http://blog.csdn.net/mahoking/article/details/46811865#)

  
      
      
          
        update mhc_user   
          
            userName = #{item.userName}, password = #{item.password}  
          
        where id = #{item.id}  
          
      
      
      
      
      
           
            update mhc_user   
                     
                userName = #{item.userName}, password = #{item.password}  
              
            where id = #{item.id}  
          
      
      
      
           
            update mhc_user   
                     
                userName = #{item.userName}, password = #{item.password}  
              
            where id = #{item.id};  
          
      
      
      
        begin  
           
            update mhc_user   
                     
                userName = #{item.userName}, password = #{item.password}  
              
            where id = #{item.id};  
          
        end;  
      

         由于批量更新的方法中参数为List,所以parameterType的值为java.util.List。

3. 创建批量操作的工具类BatchDataUtils,编写批量更新方法。
**[java]** [view plain](http://blog.csdn.net/mahoking/article/details/46811865#) [copy](http://blog.csdn.net/mahoking/article/details/46811865#)
 [print](http://blog.csdn.net/mahoking/article/details/46811865#)[?](http://blog.csdn.net/mahoking/article/details/46811865#)

/** 
    * 批量更新操作  
    * @param users 
    */  
   public static void batchUpdateUsers(List users){  
    SqlSessionFactory ssf = MyBatisUtil.getSqlSessionFactory();  
    SqlSession session = ssf.openSession();  
      
    try {  
        UserMapper userMapper = session.getMapper(UserMapper.class);  
        userMapper.batchUpdateUsers(users);  
        session.commit();  
    } catch (Exception e) {  
        e.printStackTrace();  
    } finally {  
        MyBatisUtil.closeSession(session);  
    }  
   } 

4mybatis分页查询实现总结

4.1分页实现根据时间的范围

    
        
            
            
                and id in
                #{item}
            
            
            
                and member_id in
                 #{item_member}
            
            
            
                and mobile = #{mobile}
            
            
            
                and company_name like CONCAT('%',#{companyName},'%')
            
            
            
            
                and company_name = #{fullCompanyName}
            
            
            
                and type = #{type}
            
            
            
                and pool_create >= #{startPoolCreate}
            
            
            
                and pool_create <= #{endPoolCreate}
            
        
    


    
入参的类型中的时间处理
mybatis常用条件查询总结(迭代一)_第1张图片
图片.png

4.2查询出数据后的根据count进行分页

                    int totalPage =0,pageSize=10;
                    int count= clmCirculationRes.getCount();
                    totalPage = (count+ pageSize - 1) / pageSize;

你可能感兴趣的:(mybatis常用条件查询总结(迭代一))