有事没事领个红包

mybatis中sql语句传入多个参数方法

1 使用map

<select id="selectRole" parameterType="map" resultType="RoleMap">
        SELECT id, roleName, note
        FROM role
        WHERE roleName LIKE Concat('%',#{roleName},'%')
        and note like Concat('%',#{note},'%')
    </select>

在接口中如下定义

List<Role> selectRole(Map map);

说明:这种方法简单易用,弊端是业务关联性不强,查看参数需要查看代码,可读性下降。

 

2 使用注解传递参数

xml文件中定义sql语句如下

<select id="findRoleByAnnotation" resultType="roleMap">
        SELECT id, roleName, note
        FROM role
        WHERE roleName LIKE Concat('%',#{roleName},'%')
        and note like Concat('%',#{note},'%')
    </select>

接口如下

List<Role> findRoleByAnnotation(@Param("roleName") String rolename, @Param("note") String note);

说明:通过@Param 提供的名称mybatis就知道 #{roleName} 代表 rolename 。参数可读性大大提高了。适用于参数数量较少的情况。如果参数数量过多,推荐使用javabean方式。

 

3 在参数过多的情况下,使用 javabean 传递参数

参数类RoleParam

复制代码
public class RoleParam {
    private String roleName;
    private String note;

    public String getRoleName() {
        return roleName;
    }

    public void setRoleName(String roleName) {
        this.roleName = roleName;
    }

    public String getNote() {
        return note;
    }

    public void setNote(String note) {
        this.note = note;
    }
}
复制代码

xml文件查询sql

<select id="findByJavaBean" resultType="roleMap" parameterType="com.huitong.service.command.RoleParam">
        SELECT id, roleName, note
        FROM role
        WHERE roleName LIKE Concat('%',#{roleName},'%')
        and note like Concat('%',#{note},'%')
    </select>

接口文件中

List<Role> findByJavaBean(RoleParam roleparam);

说明:当参数个数多于5个时,推荐使用javabean方式。

 

posted @   crazyCodeLove  阅读(15557)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示