这个部分是对关于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>
推荐阅读
- 七个对 Web 开发人员有用的资源
- 你必须知道的常用的足够简练的 11 个 Python代码
- 译文 面向 Web 开发人员的 50 多个 ChatGPT 提示
- Linux初学者在学习中常见的困惑
- C#控制台程序如何创建不需要IIS托管的HTTP Rest API
- JavaScript 的 Anti-Debugging 技術
- 工厂模式:将对象的创建与使用分离,提高程序可维护性和可扩展性
- 从不同维度分析:Linux与Windows的区别
- 你应该知道的18个Python函数
- 周冬雨|周冬雨戛纳造型惨遭网友嫌弃,网友言语粗鄙,但说的好有道理!