登录 后使用快捷导航
没有帐号?立即注册

IT撸码课程网

用户名   找回密码
  立即注册
发新帖

撸码网-Mybatis的基本用法,遍历集合List和数组Array

[复制链接]
100 180 100
发表于2019-01-18 11:15:06 | 只看楼主 | 阅读模式
上一主题
登录后查看本帖详细内容!您需要登录后才可以下载 登录 | 立即注册



撸码网-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>		


   

以上基本就是常用了传参方法了   

   


IT撸码网 - 必读申明1、本站会员可发帖,本主题所有言论和图片纯属会员个人意见,与本论坛立场无关.
2、本站所有帖子由该帖子作者发表,该帖子作者享有帖子相关权益.
3、本帖内容来网友及会员分享和其它网络媒体.
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意!
5、若因内容问题IT撸码网管理员和版主有权不事先通知发贴者而删除本文.
6、本站课程仅供本站会员学习参考,不得传播及用于其他用途,学习完后请在24小时内自行删除.
7、本站资源质量虽均经精心审查,但也难保万无一失,若发现资源有问题影响学习请一定及时点此进行问题反馈,我们会积极为您解决问题!
8、若发现链接失效了点此进行链接失效反馈,我们会第一时间修复链接.

精彩评论0

您需要登录后才可以发帖查看详细内容! 登录 | 立即注册
*
 

本版积分规则