mybatis map

Posted 陈修行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis map相关的知识,希望对你有一定的参考价值。

mybatis 万能map以及模糊查询

1、目录

image

2、万能map

若实体类属性或者数据库中字段较多可以考虑使用map键值对的形式插入,不过目前练习的demo字段较少,体现不出来map的好处

mapper.xml:

<update id="updateUserByMap" parameterType="map">
        update user
        set name = #{userName} ,pwd=#{userPassword}
        where id=#{userId}
</update>

接口:

int updateUserByMap(Map map);

Test:

    @Test
    public void updateUserByMap (){
        SqlSession session = MybatisUtils.getSession();
        Map<String,Object> map = new HashMap<String,Object>();
        map.put("userName","map_name1");
        map.put("userPassword","555666");
        map.put("userId","2");
        UserMapper mapper = session.getMapper(UserMapper.class);
        mapper.updateUserByMap(map);
        session.commit();
        session.close();
    }

可以看到map能够完全代替实体类进行更新操作。map中的Key对应的是sql语句#{}里的属性名,具体参数为map的value。只要parameterType设置为map且#{}与map的Key一一对应就可以

3、模糊查询

xml:

<select id="selectUserLike" resultType="entity.User" parameterType="string">
        select *
        from user
        where name like #{name}
</select>

接口:

List<User> selectUserLike(String name);

Test:

    @Test
    public void selectUser(){
    SqlSession session = MybatisUtils.getSession();
    UserMapper mapper = session.getMapper(UserMapper.class);
    List<User> users = mapper.selectUserLike("%李%");
    for (User user : users) {
        System.out.println(user);
    }

注意点:

  1. 模糊查询要在参数中添加%%

  2. 模糊查询返回的结果可能是多个,所以要用List接收

  3. 也可以在sql语句中添加%%,不过要加单引号

select *
from user
where name like \'%#{name}%\'

4、总结

模糊查询和map传参的实际应用场景会比demo中复杂的多,特别是map,在面对诸多复杂的数据库以及属性字段时,map不失为一种奇淫巧计

以上是关于mybatis map的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis DAO层传递参数到mapping.xml

Mybatis动态sql技术

mybatis返回map key怎么指定

CSP核心代码片段记录

markdown [mybatis参考]关于mybatis #mybatis的一些片段

RecyclerView holder中的Android Google Maps动态片段