07、特殊SQL的执行
7.1、模糊查询
【SQLMapper.java】
/**
* 根据用户名模糊查询用户信息
*/
List<User> getUserByLike(@Param("username") String username);
【SQLMapper.xml】
<!--List<User> getUserByLike(@Param("username") String username);-->
<select id="getUserByLike" resultType="User">
<!--select * from t_user where username like '%${username}%'-->
<!--select * from t_user where username like concat('%',#{username},'%')-->
select * from t_user where username like "%"#{username}"%"
</select>
7.2、批量删除
【SQLMapper.java】
/**
* 批量删除
*/
int deleteMore(@Param("ids") String ids);
【SQLMapper.xml】
<!--int deleteMore(@Param("ids") String ids);-->
<delete id="deleteMore">
delete from t_user where id in (${ids})
</delete>
7.3、动态设置表名
【SQLMapper.java】
/**
* 查询指定表中的数据
*/
List<User> getUserByTableName(@Param("tableName") String tableName);
【SQLMapper.xml】
<!--List<User> getUserByTableName(@Param("tableName") String tableName);-->
<select id="getUserByTableName" 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
【SQLMapper.java】
/**
* 添加用户信息
*/
void insertUser(User user);
【SQLMapper.xml】
<!--
void insertUser(User user);
useGeneratedKeys:设置当前标签中的sql使用了自增的主键
keyProperty:将自增的主键的值赋值给传输到映射文件中参数的某个属性
-->
<insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
insert into t_user values (null,#{username},#{password},#{age},#{sex},#{email})
</insert>
【SQLMapperTest.java】
@Test
public void insertUser() {
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
SQLMapper sqlMapper = sqlSession.getMapper(SQLMapper.class);
User user = new User(null,"赵六","123456",23,"男","zhaoliu@123.com");
sqlMapper.insertUser(user);
System.out.println(user);
}
运行结果:
User{id=9, username=‘赵六’, password=‘123456’, age=23, sex=‘男’, email=‘zhaoliu@123.com’}