mybatis中的动态sql拼写

1.关于map作为paramterType,使用的时候直接#{key}即可,key为map中的key。这个时候paramterType可以省略。

 

Java代码 mybatis中关于传入参数parameterType - 韦成真 - 韦成真——个人博客 
public List<StudentEntity> getStudentListByClassIds_foreach_list(List<String> classIdList);  

 

动态SQL语句:

Xml代码 mybatis中关于传入参数parameterType - 韦成真 - 韦成真——个人博客 
<!-- 7.2 foreach(循环List<String>参数) - 作为where中in的条件 -->  
<select id="getStudentListByClassIds_foreach_list" resultMap="resultMap_studentEntity">  
    SELECT ST.STUDENT_ID,  
           ST.STUDENT_NAME,  
           ST.STUDENT_SEX,  
           ST.STUDENT_BIRTHDAY,  
           ST.STUDENT_PHOTO,  
           ST.CLASS_ID,  
           ST.PLACE_ID  
      FROM STUDENT_TBL ST  
      WHERE ST.CLASS_ID IN   
     <foreach collection="list" item="classIdList"  open="(" separator="," close=")">  
        #{classIdList}  
     </foreach>  
</select>  
  

测试代码,查询学生中,在20000001、20000002这两个班级的学生:

Java代码 mybatis中关于传入参数parameterType - 韦成真 - 韦成真——个人博客 
@Test  
public void test7_2_foreach() {  
    ArrayList<String> classIdList = new ArrayList<String>();  
    classIdList.add("20000001");  
    classIdList.add("20000002");  
    List<StudentEntity> list = this.dynamicSqlMapper.getStudentListByClassIds_foreach_list(classIdList);  
    for (StudentEntity e : list) {  
        System.out.println(e.toString());  
    }  
}  

 

2.关于集合作为ParamterType,配置文件中的parameterType是可以不配置的,mybatis会自动传入的。当您想传入collection时,并不能直接传入collection对象,要将其先转换为list,然后才能传入。因为mybatis生成SQL语句遍历list时是需要用到get()方法的,而这个方法只在List中才有,Collection里是没有的。

 

java代码  
  
Map<String,String> map=new HasMap<String,String>();  
map.put("id","2");  
map.put("sex","男");  
List<Teacher> tList = teacherMapper.selectTeacher(map);    
for (Teacher entityTemp : tList) {    
    System.out.println(entityTemp.toString()); }  
 另外MyBatis还提供了一个使用注解来参入多个参数的方式。这种方式需要在接口的参数上添加@Param注解

示例:

接口方法


[java] view plaincopy

public List<Teacher> selectTeacher(@Param(value="id") String id,@Param(value="sex") String sex);  


XML文件


[html] view plaincopy

<select id="selectTeacher"  resultType="com.myapp.domain.Teacher">  
    select * from Teacher where c_id=#{id} and sex=#{sex}  
</select>  


测试代码


[java] view plaincopy

List<Teacher> tList = teacherMapper.selectTeacher("2","男");    
for (Teacher entityTemp : tList) {    
    System.out.println(entityTemp.toString()); 

 

3.在mybatis的动态sql中不能直接使用<,要使用   &lt;   来代替

<if test="endDate != null and endDate !=''" >
       and APPLY_TIME &lt; #{endDate,jdbcType=TIMESTAMP}
</if>

转载于:https://my.oschina.net/u/3045515/blog/788168

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值