# 5.MyBatis-特殊SQL

# 1.模糊查询

接口方法

List<User> selectUserByMatchUsername(String username);
1

xml

    <select id="selectUserByMatchUsername" resultType="com.demo.pojo.User">
        <!--方式一$拼接-->
<!--        select * from t_user where username like '%${username}%'-->
        <!--方式二concat函数拼接-->
<!--        select * from t_user where username like concat('%',#{username},'%')-->
        <!--方式三双引号拼接-->
        select * from t_user where username like "%"#{username}"%"
    </select>
1
2
3
4
5
6
7
8

# 2.批量删除

接口方法:

void deleteMore(@Param("ids") String ids);
1

xml

    <delete id="deleteMore">
        delete from t_user where id in (${ids})
    </delete>
1
2
3

注:不能使用#{},因为#{}会自动加上' ',导致sql执行错误


# 3.动态设置表名

接口方法:

List<User> selectAllUserByTable(@Param("tableName") String tableName);
1

xml

    <select id="selectAllUserByTable" resultType="User">
        select * from ${tableName}
    </select>
1
2
3

同样不能使用${},表名不能加单引号


# 4.添加功能获取自增主键

应用场景

接口要求插入数据后,返回包含主键的完整实体对象(如新增用户后,返回用户 ID)。

示例:

接口方法:

void insertUserReturnId(User user);
1

xml

<insert id="insertUserReturnId" useGeneratedKeys="true" keyProperty="id">
    insert into t_user values(null,#{username},#{password},#{age},#{sex},#{email})
</insert>
1
2
3

useGeneratedKeys:设置当前标签中的sql使用了自增主键

keyProperty:将自增主键的赋值传递给映射文件中参数的某个属性

最近更新: 9/19/2026, 1:27:08 PM
编程NOTE   |