持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第2天,点击查看活动详情
7、特殊SQL的执行
7.1、模糊查询
/**
* 通过用户名模糊查询用户信息
* @param mohu
* @return
*/
List<User> getUserByLike(@Param("mohu") String mohu);
<!--List<User> getUserByLike(@Param("mohu") String mohu);-->
<select id="getUserByLike" resultType="User">
<!--
select * from t_user where username like '%#{mohu}%'
%代表任意个数的任意字符,包括0个字符
'%#{mohu}%'
#{mohu}会当作占位符解析,会在两边自动加上单引号,不过?在单引号里就不是占位符了,会当成字符串的一部分
改成$就可以
-->
<!--select * from t_user where username like '%${mohu}%'-->
<!--select * from t_user where username like concat('%',#{mohu},'%')-->
select * from t_user where username like "%"#{mohu}"%"
</select>
7.2、批量删除
/**
*批量删除
* @param ids
*/
void deleteMoreUser(@Param("ids")String ids);
</select>
<!--void deleteMoreUser(@Param("ids")String ids);//ids:9,10-->
<delete id="deleteMoreUser">
delete from t_user where id in(${ids})
</delete>
7.3、动态设置表名
/**
* 动态设置表名,查询用户信息
* @return
*/
List<User> getUserList(@Param("tableName")String tableName);
<!--List<User> getUserList(@Param("tableName")String tableName);-->
<select id="getUserList" resultType="User">
select * from ${tableName}
</select>
7.4、添加功能获取自增的主键
场景模拟: t_clazz(clazz_id,clazz_name) t_student(student_id,student_name,clazz_id) 1、添加班级信息 2、获取新添加的班级的id 3、为班级分配学生,即将某学的班级id修改为新添加的班级的id`
/**
* 添加用户信息并获取自增的主键
* @param user
*/
void insertUser(User user);
<!--void insertUser(User user);-->
<!--
useGeneratedKeys 表示当前的添加功能使用自增的主键
keyProperty 将添加的数据的自增主键为实体类类型的参数的属性赋值
-->
<!--获取自增的主键为什么不用返回值,因为增删改返回值是固定的int,即影响的行数,这时就考虑将要获得的值放入属性中去-->
<insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
insert into t_user values(null,#{username},#{password},#{age},#{gender},#{email})
</insert>