《Mybatis学习-6》mybatis映射文件中参数的处理

导读:本篇文章讲解 《Mybatis学习-6》mybatis映射文件中参数的处理,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

单个参数

mybatis不会做特殊处理 ,查询时名字是不影响的(sql语句中的参数名和接口中方法的参数名可以不同)

 #{}:取出参数值 

 

多个参数

mybatis 会做特殊处理;多个参数会被分装成一个map

key: param1….paramN,或者参数的索引也可以(0,1,2,,,,N)

value:传入的参数值    

 #{}就是从 map中获取指定的key的值

方法: Employee getEmpById(Integer id,String name);

映射文件中的sql:

错误的sql:select * from employee where id = #{id} and name = #{name}

正确的sql:select * from employee where id = #{param1} and name=#{param2}     

大家可以试一下错误sql,看看是什么原因。

 

命名参数

明确指定封装参数时的map的key ;可以不需要使用param1,param2了。

@Param(“id”)

多个参数会被封装成一个map,

key:使用@param()注解指定的值

value:参数值

 #{指定的key}取出对应的参数值

方法: Employee getEmpById(@Param(“id”)Integer id,@Param(“name”)String name);

映射文件中的sql:select * from employee where id = #{id} and name=#{name}   

 

POJO

如果多个参数正好是我们业务逻辑的数据类型,我们就可以直接传入pojo;

#{属性名}:取出传入的pojo的属性值

 

Map

如果多个参数不是业务模型中 的数据,没有对应的pojo,为了方便,传入map

方法:public void getMap(Map(Stirng ,object) map);

#{key}: 取出map中对应的值

 

TO

如果多个参数不是业务模型中 的数据,但是经常使用,推荐编写一个TO(Transfer object) 数据传输对象    

分页:

Page{

        int index;

        int size;

 

#特别注意:

如果是Collection(list,set)类型或者是数组,

即使是单一参数,也会被特殊处理,也是把传入的值封装在map中

如果是List ,那么就是#{list[0]}

方法:Employee getEmpById(List<Integer> ids);

取值:#{list[0]}  (取出第一个id的值)

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/16878.html

(0)
小半的头像小半

相关推荐

半码博客——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!