• Mybatis参数处理


    一、单个参数

      单个参数,mybatis不会做特殊处理

      直接#{ } 括号里面的内容可以随意些。

    二、多个参数

      多个参数在明确封装参数时在每个参数 前面加上@param("参数名 ")

    接口:

    public void updateStu(@Param("sid")Integer sid,@Param("sname")String sname,@Param("score")String score,@Param("sclass")String sclass);
    //XMl文件
    <
    update id="updateStu"> update stu1 set sname=#{sname}, score=#{score},sclass=#{sclass} where sid=#{sid} </update>

    三、在接口传入多个参数时候不加@Param的情况下,如果继续在statement语句中 update stu1 set sname=#{sname},  score=#{score},sclass=#{sclass} where sid=#{sid}

      就会出错,

      但是按照接口参数的顺序,设定为param1.param2....,在#{}的里面按需要填写响应的param。

    <update id="updateStu">
            update stu1 set sname=#{param1},score=#{param2},sclass=#{param3} where sid=#{param4}
        </update>

    四、POJO

      如果多个参数都是POJO中的属性,我们就可以直接将POJO对象传入

      Java接口:

      

    public void insertStu(Student student);

      xml文件: 

      直接在#{ }中写POJO的属性,就可以将POJO的所对应的属性的值传入参数。

    <insert id="insertStu" parameterType="com.neuedu.bean.Student"
            useGeneratedKeys="true" keyProperty="sid">
            insert into stu1
            (sname,score,sclass) values(#{sname},#{score},#{sclass} )
    </insert>

    五、Map:

      如果多个参数不是业务模型中的数据,没有对应的pojo,不经常使用,为了方便,我们也可以传入map

      Java接口:

    public void updateStuMap(Map<Object, Object>map);

      xml文件: 

    <!--public void updateStuMap(Map<Integer, String >map); 多个参数Map的修改 -->
        <update id="updateStuMap">
            update stu1 set sname=#{sname},
            score=#{score},sclass=#{sclass} where sid=#{sid}
        </update>

      在测试类中,要将传入的参数和参数对应的属性,以key-value的形式存入map中

      如:

    @Test
        public void testUpdateStu2() throws IOException{
            SqlSessionFactory sqlSessionFactory = sqlSessionFactory();
            SqlSession openSession = sqlSessionFactory.openSession();
            Stu mapper = openSession.getMapper(Stu.class);
            Map<String, String> map=new HashMap<>();
            map.put("sname", "xiaoming");
            map.put("score", "100");
            map.put("sclass", "1");
            map.put("sid", "1");
            mapper.updateStuMap(map);
            openSession.commit();
            openSession.close();
        }
  • 相关阅读:
    使用CORS解决flask前端页面跨域问题
    re.search 与 re.match的区别
    jupyter-notebook快捷键的使用
    docker端口的映射顺序
    [转]/dev/null 命令用法
    [转]Docker容器内不能联网的6种解决方案
    牛客网python试题-错误整理-20180711
    docker常用命令
    linux实用命令-待补充
    docker exec小脚本
  • 原文地址:https://www.cnblogs.com/xuesheng/p/7475348.html
Copyright © 2020-2023  润新知