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 小时前
java list=null,可以stream吗
java·windows·list
郝学胜-神的一滴2 小时前
Linux的pthread_self函数详解:多线程编程中的身份标识器
linux·运维·服务器·开发语言·c++·程序人生
HUST2 小时前
C 语言 第七讲:数组和函数实践:扫雷游戏
c语言·开发语言·数据结构·vscode·算法·游戏·c#
oioihoii2 小时前
C++高并发编程核心技能解析
开发语言·c++
jimy12 小时前
程序崩溃free(): double free detected in tcache 2
linux·开发语言·数据结构·链表
开开心心_Every2 小时前
无广告干扰:简单好用文字LOGO设计工具
xml·java·网络·数据库·华为od·华为云·excel
古城小栈2 小时前
GitHub Copilot for Java:上下文感知重构建议实操
java·github·copilot
秋邱2 小时前
Java面向对象进阶:封装、继承、多态的实现逻辑与实战案例
java·开发语言·后端·spring cloud·ar·restful