一、//WHERE/IF/SQL id/INCLUDE refid二、//SET/IF三、//FOREACH四、//resultMap/id/result

一、//WHERE/IF/SQL id/INCLUDE refid

--sql标签封装字段,select时通过include获取字段,where会自动识别是否需要保留if标签后sql的and,将类成员变量和值作为键值对传入Map集合,将Map集合作为形参传入时,获取符合键值对的数据库数据。

        Map map = new HashMap<>();

        map.put("name","_八");

        map.put("sex","男");

        List users = mapper.selectByCondition(map);

        users.forEach(System.out::println);
    

        name,id,age

    

    

二、//SET/IF
--set标签,能够自动把每个if标签后sql语句带的“,”智能保留或者删除,形参为实体类时自动识别类成员变量并存入数据库。

        User user = new User(3, "张牧之", 45, "男");

        int i = mapper.updateInSet(user);

        System.out.println(i == 1 ? "成功" : "失败");

        sqlSession.close();

        resourceAsStream.close();

    

        update student

        

            

                name=#{name},

            

            

                age=#{age},

            

            

                sex=#{sex}

            

        

        where id=#{id}

三、//FOREACH

--使用forEach标签,当方法传入数组时,遍历数组并获取对应的数据。
        List users = mapper.selectByIds(new int[]{1, 4, 7});

        users.forEach(System.out::println);

    
四、//resultMap/id/result

使用resultMap手动给sql语句配置映射,当类成员和数据库字段名不一致时,使用column、property来手动映射

        List users = mapper.selectNeed();

        users.forEach(System.out::println);

    

        

        

        

        

    

    
五、//resultMap/id/association/collection
使用resultMap手动给sql语句配置映射,当类成员有引用类型时、当类成员有集合时使用

        User allById = mapper.findAllById(1);

        System.out.println(allById);

        System.out.println(allById.getUserInfo());

        List listOrder = allById.getListOrder();

        listOrder.forEach(System.out::println);
    

        

        

        

    

你可能感兴趣的:(sql,mybatis,数据库)