Mybatis中用Map传递所有属性和模糊查询(学习笔记3)

本文介绍了如何在Mybatis中使用Map作为参数传递,尤其是在实体类属性较多时,以及如何实现模糊查询,包括配置文件中的SQL编写和测试类的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、用Map传递所有参数

在实体类属性比较多的时候用Map代替实体类会方便很多

编写抽象方法

   //用map添加一个用户
    //这里抽象方法的参数用Map

    int insertUser2(Map<String,Object> map);

 mybatis配置文件

<!-- 配置文件这里的sql语句参数就是我们刚刚抽象方法里面的参数map
需要添加的数据名称我们就可以自己随便取,不用和实体类的属性名相同,
在数据多的时候非常方便  -->
    <insert id="insertUser2" parameterType="map">
        insert into mybatis1.user values (#{i},#{n},#{p});
    </insert>

测试类

    @Test
    public void insertUser1(){
        //获取SqlSession对象
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class); //通过SqlSession 得到mapper
        
        //因为用的map需要创建一个map对象
        Map<String,Object> map = new HashMap<>();
        map.put("i",4);
        map.put("n","哈哈");
        map.put("p","1234");
        
        int in = mapper.insertUser2(map);

        //这里需要特别注意的是增删改是需要提交事务的,没有提交事务数据库是不会跟新的
        if(in > 0){
            sqlSession.commit();
            System.out.println("添加成功");
        }


        // 用完后关闭sqlSession
        sqlSession.close();
    }

二、模糊查询

编写抽象方法

 //模糊查询
    //查询带李用户的方法
    List<User> ListLike(String value);

配置文件 (需要注意sql注入问题)

  <select id="ListLike" resultType="com.li.pojo.User" parameterType="String">
        select * from mybatis1.user where name like "%"#{value}"%"   <!--就是在
这里查询的字符
两边拼接我们需要的通配符-->
    </select>

方式二:不在配置文件中拼接通配符

<select id="ListLike" resultType="com.li.pojo.User" parameterType="String">
        select * from mybatis1.user where name like #{value}   
    </select>

测试类

@Test
    public void NameUser1(){
        //获取SqlSession对象
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class); //通过SqlSession 得到mapper
        List<User> userList = mapper.ListLike("李");

        for (User user : userList) {
            System.out.println(user);
        }

        // 用完后关闭sqlSession
        sqlSession.close();

    }

方式二:在测试类中拼接通配符

    @Test
    public void NameUser1(){
        //获取SqlSession对象
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class); //通过SqlSession 得到mapper
        List<User> userList = mapper.ListLike("%李%");

        for (User user : userList) {
            System.out.println(user);
        }

        // 用完后关闭sqlSession
        sqlSession.close();

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一年找不到工作就去厂里大螺丝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值