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>
相关推荐
乌暮2 小时前
Spring AOP 与 Spring 事务:用大白话彻底理解原理与实践
java·数据库·spring boot·后端·sql·学习·spring
YDS8292 小时前
Small Spring IOC篇:容器事件及其监听器
java·spring
金銀銅鐵3 小时前
带您看懂字节码指令(三):一行加法里有什么
java·jvm
文丑颜不良啊3 小时前
LeetCode2921~2940题目解析
java·leetcode
北漂人Java4 小时前
基于 Spring AI Alibaba WorkFlow 构建 Java 生产级 AI Agent
java·人工智能·spring
用户112936112194 小时前
编译全绿,上线就崩:MyBatis 五层方法名大小写埋下的坑
java
文丑颜不良啊5 小时前
LeetCode2901~2920题目解析
java·leetcode
码云社区5 小时前
能碳管理系统开发要关注什么?能源数据、统计口径与AI分析的衔接
java·人工智能·ai·能源·能源管理系统·能碳管理系统·能碳管理系统源码
Flynn Liang5 小时前
Agentic 工作流:子代理、Supervisor 与人工介入
java·langchain·多智能体·supervisor·agentic·langchain4j
xys_6785 小时前
JavaSE通关手册:运算符
java·java-ee