首页 > 其他 > 详细

mybatis 基础(二) CRUD中的关键点

时间:2019-10-08 21:55:56      阅读:88      评论:0      收藏:0      [点我收藏+]

今日学习中遇见几个问题

关于mybatis foreach的几种情况

1.当我需要传入多个参数的时候,可以将参数封装进map集合中(一般来说是针对一个对象而言的,比如user中的username,gender,age等)

这里的name,gender均为map的key
参数map应为

         
       Map<String,String> map=new HashMap<>();
        map.put("name","chq");
        map.put("gender","男");
        List<User> list = userDao.findByMap(map);

    <select id="findByMap" parameterType="java.util.HashMap" resultType="user">
        select * from user where username=#{name} and gender=#{gender}
    </select>     

当传入为多个对象的时候,我们就需要重新创建一个对象,这个对象中包含其他对象以及getter,setter方法

2.批量添加,首先 我们创建一个list集合,向集合中添加user对象,然后遍历,批量添加 注意这里的collection是list

 <insert id="insertBatch" parameterType="java.util.ArrayList"  >
        insert into user(username,age,gender) values
        <foreach collection="list" item="user" separator=",">
            (#{user.userName},#{user.age},#{user.gender})
        </foreach>
    </insert>



 public void testInsertBatch() throws  Exception{
        List<User> list=new ArrayList<>();
        User user1=new User();
        user1.setUserName("111");
        user1.setGender("女");
        user1.setAge(33);
        User user2=new User();
        user2.setUserName("222");
        user2.setGender("女");
        user2.setAge(44);
        User user3=new User();
        user3.setUserName("333");
        user3.setGender("女");
        user3.setAge(55);
        list.add(user1);
        list.add(user2);
        list.add(user3);
        boolean b = userDao.insertBatch(list);
        System.out.println(b);
    }

3.当非一个对象的参数时候,我们可以把多个对象添加到map集合中,然后再去操作, 比如下方,我们map集合中有属性gender, 以及一个list
这个与重新重建一个实体类有什么区别呢? 个人见解: 好像没啥区别,就算到时候回传到前台时也是几乎差不多.....有哪位有好的见解欢迎留言....!!!!!!!!!!!

    <select id="findByMapMore" parameterType="java.util.Map" resultType="user">
        select * from user where gender=#{gender} and uid in
        <foreach collection="ids" item="item" index="index" open="(" separator="," close=")">
            #{item}
        </foreach>
    </select>

     @Test
    public void testFindByMapMore() throws  Exception{
        Map<String,Object> map=new HashMap<>();
        map.put("gender","男");
        List<Integer> list=new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        map.put("ids",list);
        List<User> users = userDao.findByMapMore(map);
        for (User user:users){
            System.out.println(user);
        }
    }

4.传入一个数组时,注意collection是array,


 @Test
    public void testFindByArray() throws  Exception{
        Integer[] arrays=new  Integer[]{1,2,3,4,5};
        List<User> list=userDao.findByArray(arrays);
        for(User user:list){
            System.out.println(user);
        }
    }


    <select id="findByArray"  resultType="user">
        select * from user  where uid in
        <foreach collection="array" open="(" separator="," close=")" index="index" item="id">
            #{id}
        </foreach>
    </select>

mybatis 基础(二) CRUD中的关键点

原文:https://www.cnblogs.com/chq1024/p/11637296.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!