初学Mybatis之 Map 传参与模糊查询

实体类或数据库中的表,字段或参数过多,考虑使用Map

接口里定义方法

java 复制代码
int addUser(Map<String,Object> map);

mapper.xml:

parameterType 参数类型设置为 map

sql 语句的 values 不一定要与数据库中的表字段相同

XML 复制代码
    <insert id="addUser" parameterType="map">
        insert into mybatis.user(id,name,pwd) values(#{userId},#{userName},#{userPwd});
    </insert>

测试类:

先 new 一个 HashMap

再调用 put 方法添加数据

java 复制代码
    @Test
    public void addUser(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);

        Map<String, Object> map = new HashMap<String, Object>();

        map.put("userId",5);
        map.put("userName","张三5");
        map.put("userPwd","123");
        
        mapper.addUser(map);
        
        sqlSession.commit();

        sqlSession.close();
    }

Map 传递参数,直接在 sql 中取出 key 即可,parameterType="map"

对象传递参数,直接在 sql 中取对象的属性即可,parameterType="Object"

只有一个基本类型参数的情况下,可以直接在 sql 中取到

多个参数用 Map,或者注解

模糊查询:

写个接口

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

mapper.xml:

XML 复制代码
    <select id="getUserLike" resultType="com.demo.pojo.User">
        select * from mybatis.user where name like #{value}
    </select>

测试类:

模糊查询加通配符%

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();
    }
相关推荐
for_ever_love__10 分钟前
MySQL 索引类型全解:B+Tree / Hash / R-Tree / 全文 的底层差异,以及一次性建对的选型表
数据库·mysql·b+树·唯一索引·全文索引·索引类型·索引分类
青春逝如流水12 分钟前
Java 线程在内存模型(JMM)与 JVM 实现:规范与落地的多元路径
java·开发语言·jvm·多线程·ai文章
wangbing11252 小时前
springboot应用关闭时触发动作
java·spring boot·后端
weixin_460443565 小时前
2026年新修订《网络安全法》实施:Java私有化考试系统如何做好SBOM、漏洞治理与安全升级?
java·开发语言·在线考试系统·企业培训考试系统·宏远培训考试系统·国企培训考试系统·国产化培训系统
海鸥-w8 小时前
什么是AOP
java
仍然.8 小时前
Redis---缓存
数据库·redis·缓存
Cc.Y8 小时前
Java零基础入门:可变字符串与包装类:StringBuilder、StringBuffer 与 通讯录管理系统实战
java·开发语言·python
Aloudata8 小时前
LookML 语义模型 vs 企业级独立语义层:BI 建模语言能否承担企业语义底座?
数据库·人工智能·数据分析·数据资产·dataagent
paopaokaka_luck8 小时前
基于springboot+vue的智慧家政管理系统(AI问答、 WebSocket实时沟通、ECharts运营分析、订单规则与服务追踪)
java·javascript·spring boot·数据分析·echarts·mybatis
细嗅蔷薇@8 小时前
排序和分⻚(order by 、limit)
数据库·oracle