时间:2021-05-20
前言
单个参数
单个参数的传参比较简单,可以是任意形式的,比如#{a}、#{b}或者#{param1},但是为了开发规范,尽量使用和入参时一样。
Mapper如下:
UserInfo selectByUserId(String userId);XML如下:
<select id="selectByUserId" resultType="cn.cb.demo.domain.UserInfo"> select * from user_info where user_id=#{userId} and status=1 </select>多个参数
多个参数的情况下有很多种传参的方式,下面一一介绍。
使用索引【不推荐】
XML如下:
<select id="selectByUserIdAndStatus" resultType="cn.cb.demo.domain.UserInfo"> select * from user_info where user_id=#{param1} and status=#{param2} </select>注意:由于开发规范,此种方式不推荐开发中使用。
使用@Param
@Param这个注解用于指定key,一旦指定了key,在SQL中即可对应的key入参。
Mapper方法如下:
UserInfo selectByUserIdAndStatus(@Param("userId") String userId,@Param("status") Integer status);XML如下:
<select id="selectByUserIdAndStatus" resultType="cn.cb.demo.domain.UserInfo"> select * from user_info where user_id=#{userId} and status=#{status} </select>使用Map
Mybatis底层就是将入参转换成Map,入参传Map当然也行,此时#{key}中的key就对应Map中的key。
Mapper中的方法如下:
UserInfo selectByUserIdAndStatusMap(Map<String,Object> map);XML如下:
<select id="selectByUserIdAndStatusMap" resultType="cn.cb.demo.domain.UserInfo"> select * from user_info where user_id=#{userId} and status=#{status} </select>测试如下:
@Test void contextLoads() { Map<String,Object> map=new HashMap<>(); map.put("userId","1222"); map.put("status",1); UserInfo userInfo = userMapper.selectByUserIdAndStatusMap(map); System.out.println(userInfo); }POJO【推荐】
多个参数可以使用实体类封装,此时对应的key就是属性名称,注意一定要有get方法。
Mapper方法如下:
UserInfo selectByEntity(UserInfoReq userInfoReq);XML如下:
<select id="selectByEntity" resultType="cn.cb.demo.domain.UserInfo"> select * from user_info where user_id=#{userId} and status=#{status} </select>实体类如下:
@Datapublic class UserInfoReq { private String userId; private Integer status;}List传参
List传参也是比较常见的,通常是SQL中的in。
Mapper方法如下:
List<UserInfo> selectList( List<String> userIds);XML如下:
<select id="selectList" resultMap="userResultMap"> select * from user_info where status=1 and user_id in <foreach collection="list" item="item" open="(" separator="," close=")" > #{item} </foreach> </select>数组传参
这种方式类似List传参,依旧使用foreach语法。
Mapper方法如下:
List<UserInfo> selectList( String[] userIds);XML如下:
<select id="selectList" resultMap="userResultMap"> select * from user_info where status=1 and user_id in <foreach collection="array" item="item" open="(" separator="," close=")" > #{item} </foreach> </select>总结
到此这篇关于Mybatis的几种传参方式详解的文章就介绍到这了,更多相关Mybatis传参方式内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
mybatis中分页有3种方式来实现,通过sql语句(两种传参方式)来实现,通过mybatis的Rowbounds来实现。通过(自定义类型)传参来实现分页:映射
前言在做微信小程序的时候,经常会遇到需要页面间传递参数的情况,根据目前项目经验,总结了以下几种方式:URL传参、缓存和方法调用。URL传参这种方式是最简单也是最
Mybatis的Mapper.xml语句中parameterType向SQL语句传参有两种方式:#{}和${}我们经常使用的是#{},一般解说是因为这种方式可以
React中传参方式有很多,通过路由传参的方式也是必不可少的一种。本文记录项目中会用到的路由传参方式:路由跳转传参API+目标路由获取参数的方式。一、动态路由跳
模糊查询也是数据库SQL中使用频率很高的SQL语句,使用MyBatis来进行更加灵活的模糊查询。直接传参法直接传参法,就是将要查询的关键字keyword,在代码