MyBatis的10种用法( 四 )


这个部分是对关于XML配置文件和XML映射文件的而讨论的 。下一部分将详细讨论Java API,所以你可以得到你已经创建的最有效的映射 。
参数为array示例的写法接口的方法声明:
public List<StudentEntity> getStudentListByClassIds_foreach_array(String[] classIds);动态SQL语句:
<!— 7.1 foreach(循环array参数) - 作为where中in的条件 --><select id="getStudentListByClassIds_foreach_array" resultMap="resultMap_studentEntity">SELECT ST.STUDENT_ID,ST.STUDENT_NAME,ST.STUDENT_SEX,ST.STUDENT_BIRTHDAY,ST.STUDENT_PHOTO,ST.CLASS_ID,ST.PLACE_IDFROM STUDENT_TBL STWHERE ST.CLASS_ID IN<foreach collection="array" item="classIds"open="(" separator="," close=")">#{classIds}</foreach></select>测试代码,查询学生中,在20000001、20000002这两个班级的学生:
@Testpublic void test7_foreach() {String[] classIds = { "20000001", "20000002" };List<StudentEntity> list = this.dynamicSqlMapper.getStudentListByClassIds_foreach_array(classIds);for (StudentEntity e : list) {System.out.println(e.toString());}}2参数为list示例的写法 接口的方法声明:
public List<StudentEntity> getStudentListByClassIds_foreach_list(List<String> classIdList);动态SQL语句:
<!-- 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_IDFROM STUDENT_TBL STWHERE ST.CLASS_ID IN<foreach collection="list" item="classIdList"open="(" separator="," close=")">#{classIdList}</foreach></select>测试代码,查询学生中,在20000001、20000002这两个班级的学生:
@Testpublic 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());}sql片段标签:通过该标签可定义能复用的sql语句片段,在执行sql语句标签中直接引用即可 。这样既可以提高编码效率,还能有效简化代码,提高可读性
需要配置的属性:id="" >>>表示需要改sql语句片段的唯一标识
引用:通过标签引用,refid="" 中的值指向需要引用的中的id=“”属性
<!--定义sql片段--><sql id="orderAndItem">o.order_id,o.cid,o.address,o.create_date,o.orderitem_id,i.orderitem_id,i.product_id,i.count</sql> <select id="findOrderAndItemsByOid" parameterType="java.lang.String" resultMap="BaseResultMap">select<!--引用sql片段--><include refid="orderAndItem" />from ordertable ojoin orderitem i on o.orderitem_id = i.orderitem_idwhere o.order_id = #{orderId}</select>





推荐阅读