这里写目录标题
一、模糊查询
Java的Mapper接口
public interface SQLMapper {
/**
* 根据用户名模糊查询用户信息
*/
List<User> getUserByLike(@Param("username") String username);
}
Mapper.xml文件
- 第一种方式:
<select id="getUserByLike" resultType="User">
select * from t_user where username like '%${username}%'
</select>
- 第二种方式:
<select id="getUserByLike" resultType="User">
select * from t_user where username like concat('%', #{username}, '%')
</select>
- 第三种方式:
<select id="getUserByLike" resultType="User">
select * from t_user where username like "%"#{username}"%"
</select>
上述三种方式,推荐是哟第二第三种。
测试文件
@Test
public void testGetUserByLike() throws IOException {
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
SQLMapper mapper = sqlSession.getMapper(SQLMapper.class);
List<User> user = mapper.getUserByLike("And");
System.out.println(user);
}
二、批量删除
Java的Mapper接口
/**
* 批量删除
*/
int deleteMore(String ids);
Mapper.xml文件
<delete id="deleteMore">
delete from t_user where id in (${ids})
</delete>
${}为推荐写法
delete from t_user where id in (#{ids})
#{ids}不推荐使用,因为这边会自动添加单引号,变成 delete from t_user where id in (‘9,10’)。
测试文件
@Test
public void testDeleteMore() throws IOException {
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
SQLMapper mapper = sqlSession.getMapper(SQLMapper.class);
int result = mapper.deleteMore("9, 10");
System.out.println(result);
}
三、动态设置表名
Java的Mapper接口
//查询指定表中的数据
List<User> getUserByTableName(String tableName);
Mapper.xml文件
<select id="getUserByTableName" resultType="User">
select * from ${tableName}
</select>
测试文件
@Test
public void testGetUserByTableName(){
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
SQLMapper mapper = sqlSession.getMapper(SQLMapper.class);
List<User> t_user = mapper.getUserByTableName("t_user");
System.out.println(t_user);
}
四、添加功能获取自增的主键
Java的Mapper接口
/**
* 添加用户
*/
void insetUser(User user);
Mapper.xml文件
<insert id="insetUser" useGeneratedKeys="true" keyProperty="id">
insert into t_user values(null, #{username}, #{password},#{age},#{gender},#{email})
</insert>
- useGeneratedKeys :设置当前标签中的sql使用了自增的主键(id)
- keyProperty :将自增的主键的值赋值给传输到映射文件中的参数的某个属性(user.id)
测试文件
@Test
public void testInsetUser(){
SqlSession sqlSession = SqlSessionUtils.getSqlSession();
SQLMapper mapper = sqlSession.getMapper(SQLMapper.class);
mapper.insetUser(new User(null, "Joy","111",11,"f","abc@qq.com"));
}