Mybatis-万能的Map&模糊查询

Map写法

假设,我们的实体类,或者数据库中的表,字段或者参数过多,我们应当考虑使用Map

Maaapper.xml 配置文件中

xml 复制代码
    <!--万能的map-->
    <insert id="addUser2" parameterType="map">
        insert into mybatis.user(id, name, pwd) values (#{userId}, #{userName}}, #{passWord});
    </insert>

接口中

java 复制代码
    // 万能的Map,用map传有个好处,不需要知道数据里面有什么数据 ,我们只需要查对应的字段
    int addUser2(Map<String,Object>  map);

测试方法中

java 复制代码
    @Test
    public void addUser2(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        Map<String,Object> map = new HashMap<String,Object>();
        map.put("userId",3);
        map.put("userName","cike_y");
        map.put("passWord","123456");
        int i = mapper.addUser2(map);
        if (i>0){
            System.out.println("成功插入"+i+"条数据");
        }
        sqlSession.commit();
        sqlSession.close();
    }
  • Map传递参数,直接在sql取出key即可!parameterType="map"
  • 对象传递参数,直接在sql中取出对象的属性即可!parameterType="Object"
  • 只有一个基本类型参数的情况下,可以直接在sql中取到! (可以不写参数类型)
  • 多个参数用Map,或者使用注解!

模糊查询

必要条件

  1. SQL语句执行的时候传递通配符 % %
plsql 复制代码
select * from mybatis.user where  name like "%"#{value}"%";
select * from mybatis.user where  name like '%${value}%';
  1. Java代码执行的时候,传递通配符 % %
java 复制代码
List<user> userList = mapper.getUserLike("%五%");

测试方法中

java 复制代码
    @Test
    public void getUserLike(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        List<user> userList = mapper.getUserLike("%五%");
        for (user user : userList){
            System.out.println(user);
        }
        sqlSession.close();
    }

接口中

java 复制代码
List<user> getUserLike(String value);

Mapper.xml配置文件中

xml 复制代码
    <select id="getUserLike"  resultType="com.cike.pojo.user">
        <!--select * from mybatis.user where  name like '%${value}%';-->
        select * from mybatis.user where  name like "%"#{value}"%";
    </select>
相关推荐
心之语歌1 小时前
基于注解+拦截器的API动态路由实现方案
java·后端
华仔啊2 小时前
Stream 代码越写越难看?JDFrame 让 Java 逻辑回归优雅
java·后端
ray_liang2 小时前
用六边形架构与整洁架构对比是伪命题?
java·架构
Ray Liang4 小时前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
Java水解4 小时前
Java 中间件:Dubbo 服务降级(Mock 机制)
java·后端
SimonKing8 小时前
OpenCode AI辅助编程,不一样的编程思路,不写一行代码
java·后端·程序员
FastBean8 小时前
Jackson View Extension Spring Boot Starter
java·后端
Seven979 小时前
剑指offer-79、最⻓不含重复字符的⼦字符串
java
皮皮林55119 小时前
Java性能调优黑科技!1行代码实现毫秒级耗时追踪,效率飙升300%!
java
冰_河19 小时前
QPS从300到3100:我靠一行代码让接口性能暴涨10倍,系统性能原地起飞!!
java·后端·性能优化