# 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
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
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
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
2
3
useGeneratedKeys:设置当前标签中的sql使用了自增主键
keyProperty:将自增主键的赋值传递给映射文件中参数的某个属性