2020-11-18 你的名字 2022-12-22 08:44 67阅读 0赞 **撸码网-Mybatis的基本用法,遍历集合List和数组Array** 今天只讲用法,不讲原理,原理请自己去深入: 一、最基本用法 **1:单个参数** Dao层: Student queryStu(Integer id); 或 Student queryStu(@Param("id") Integer id); XML: SELECT * FROM tab_student FROM id = #{id} //如果不写@Param默认就是参数名称,写@Param就是@Param指定的参数 **2:多个参数** Dao层: Student queryStu(@Param("id") Integer id, @Param("name1") String name); //多个参数必须写@Param XML: SELECT * FROM tab_student FROM id = #{id} AND name = #{name1} //@Param就是@Param指定的参数,如name1 **3:对象传递** Dao层: Student queryStu(Student stu); XML: SELECT * FROM tab_student FROM id = #{id} AND name = #{name} //id和name就是Student的属性名称 **4:传递Map** Service层: Map map = new HashMap(); map.put("id", 2); map.put("name", "放牛娃"); Dao层: Student queryStu(Map map); XML: SELECT * FROM tab_student FROM id = #{id} AND name = #{name} //id和name就是Map的key **5:数组参数:** Dao层: ArrayList<Student> selectByIds(Integer[] ids); XML: <select id="selectByIds" resultMap="BaseResultMap"> select * from tab_student where id in <foreach item="item" index="index" collection="array" open="(" separator="," close=")"> #{item} </foreach> </select> 特别注意collection="array", 如果不写selectByIds(@Param("arrs") Integer\[\] ids); 默认就是 array, 写了就用@Param("arrs") 的arrs; **6:List参数** Dao层: List<Student> selectByIds(List<Integer> ids); XML: <select id="selectByIds" resultMap="BaseResultMap"> select * from tab_student where id in <foreach item="item" index="index" collection="list" open="(" separator="," close=")"> #{item} </foreach> </select> 特别注意collection="list", 如果不写selectByIds(@Param("ls") List<Integer> ids); 默认就是 list, 写了就用@Param("ls") ls; **7:遍历集合和参数** Dao层: List<Student> selectByIds(@Param("ids") List<Integer> ids, @Param("score") Integer score); //一定要有@Param XML: <select id="selectByIds" resultMap="BaseResultMap"> select * from tab_student where score = #{score} and id in <foreach item="item" index="index" collection="ids" open="(" separator="," close=")"> #{item} </foreach> </select> 数组一样的处理方式 List<Student> selectByIds(@Param("ids") Integer\[\] ids, @Param("score") Integer score); **8:集合和对象一样的处理方式** List<Student> selectByIds(@Param("ids") List<Integer> ids, @Param("stu") Student stu); XML: <select id="getDataTest" resultType="com.example.demo.model.Student"> select * from tab_student where score = #{stu.score} and id in <foreach item="item" index="index" collection="ids" open="(" separator="," close=")"> #{item} </foreach> </select> 注意:\#\{stu.score\} **9:遍历两个集合** Service层: public void mybatisTest1(){ List<Integer> list1 = new ArrayList<>(); list1.add(1); list1.add(2); List<Integer> list2 = new ArrayList<>(); list2.add(100); list2.add(200); List<Student> li = demoDao.getDataTest1(list1, list2); System.out.println(li); Map map = new HashMap(); map.put("list1", list1); map.put("list2", list2); List<Student> li2 = demoDao.getDataTest2(list1, list2); System.out.println(li2); } Dao层: List<Student> getDataTest1(@Param("list1") List<Integer> list1, @Param("list2") List<Integer> list2); XML: <select id="getDataTest1" resultType="com.example.demo.model.Student"> select * from tab_student where id in <foreach item="item" index="index" collection="list1" open="(" separator="," close=")"> #{item} </foreach> and score in <foreach item="item" index="index" collection="list2" open="(" separator="," close=")"> #{item} </foreach> </select> 也可以用map Dao层: List<Student> getDataTest2(@Param("params") Map<String, Object> map); XML: <select id="getDataTest1" resultType="com.example.demo.model.Student"> select * from tab_student where id in <foreach item="item" index="index" collection="params.list1" open="(" separator="," close=")"> #{item} </foreach> and score in <foreach item="item" index="index" collection="params.list2" open="(" separator="," close=")"> #{item} </foreach> </select> 以上基本就是常用了传参方法了
还没有评论,来说两句吧...