zoukankan      html  css  js  c++  java
  • Mybatis使用map传递参数与模糊查询写法

      前言:你有没有遇到这种情况:当你使用mybatis修改表数据时,你只想改动几个字段,但是你的实体类封装的数据太多了,有上百条数据,

    你若是创建这么一个实体类,那么真的要折腾死人。有没有什么办法只传递几个你想要的数据呢?下面来看看这种使用map传值的方式:

    数据库有这么一个表student且数据只有一条:

    你现在想把这条数据中的sname改为王云云,sgender改为女。

    先在对应的Mapper接口中编写方法updateById():

    public int updateById(Map<String,Object> map);

    在对应的Mapper.xml中绑定参数并编写sql:

    <update id="updateById" parameterType="map">
        update mybatis.student set sname=#{sname},sgender=#{sgender} where id = #{id};
    </update>

    写相应的java代码进行修改的测试:

    @Test
    public void updateById(){
       SqlSession sqlSession = MybatisUtils.getSqlSession();
       UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
       Map<String,Object> map = new HashMap<String,Object>();
       map.put("sname","王云云");
       map.put("sgender","女");
       map.put("sid","1001");
       userMapper.updateById(map);
       sqlSession.commit();
       sqlSession.close();
    }

    运行测试代码并查看结果:

    修改成功!

    mybatis中如何写模糊查询避开sql注入?

    1、java代码执行的时候传递通配符%%:

    mapper.getUser("%王%");

    2、sql拼接时就使用通配符:

    select * from user where name like "%"#{value}"%"
  • 相关阅读:
    Ubuntu,QT5连接MySQL
    QT添加程序图标及窗口图标
    动态库与静态库
    Windows Gdi & CDC和HDC的区别与转换
    MFC多线程各种线程用法 .
    MFC 使用控制台打印程序信息
    Windows程序员必须知道的字符编码和字符集
    MFC DestroyWindow、OnDestroy、OnClose 程序关闭相关
    Windows消息机制详解
    c c++ 宏定义中#, ##, #@的含义
  • 原文地址:https://www.cnblogs.com/wmskywm/p/13582599.html
Copyright © 2011-2022 走看看