持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第7天,点击查看活动详情
Mybatis查询功能
将单行数组存入map中
接口
Map<String,Object> getUserByIdToMap(@Param("id") int id);
配置文件
<select id="getUserByIdToMap" resultType="map">
select * from t_user where id=#{id}
</select>
实现
public void getUserByIdToMap(){
SqlSession sqlSession = SqlSeesionUtils.getSqlSession();
SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
Map<String, Object> map = mapper.getUserByIdToMap(2);
System.out.println(map);
}
将多行数组存入map中
由于是多个map并不能放到一个map中,所以这里用的是list
接口
List<Map<String ,Object>> getAllUser();
但除此外,Map可以通过@MapKey来存储键值,从而完成map中存储多条数据
@MapKey("id")
Map<String ,Object> getAllUser();
执行特殊SQL语句
模糊查询
用like关键字实现模糊查询
接口
List<User> getAllUserBySpecial(@Param("mohu") String mohu);
配置文件
有以下三种查询方式:
<select id="getAllUserBySpecial" resultType="User">
<!-- select * from t_user where username like '%${mohu}%' -->
<!-- select * from t_user where username like "%"#{mohu}"%" -->
select * from t_user where username like concat('%',#{mohu},'%')
</select>
实现
这里以模糊查询username带字母"n"的为例
@Test
public void getAllUserBySpecial(){
SqlSession sqlSession = SqlSeesionUtils.getSqlSession();
SpecialSqlMapper mapper = sqlSession.getMapper(SpecialSqlMapper.class);
List<User> name = mapper.getAllUserBySpecial("n");
name.forEach(System.out::println);
}
批量删除
接口
int deleteMore(@Param("ids") String ids);
#也可以用between and 的方式,但这种方式需要两个参数start,end
int deleteMore(@Param("ids") String ids,@Param("ide")String ide);
配置文件
delete from t_user where id in (${ids})
#between
delete from t_user where id between ${ids} and ${ide}
实现
public void deleteMore(){
SqlSession sqlSession = SqlSeesionUtils.getSqlSession();
SpecialSqlMapper mapper = sqlSession.getMapper(SpecialSqlMapper.class);
mapper.deleteMore("5,6");
#mapper.deleteMore("5","6"); #between方式
}
动态设置表名
接口
List<User> changeTableName(@Param("tablename") String tablename);
配置文件
<select id="changeTableName" resultType="User">
select * from ${tablename}
</select>
实现
public void changeTableName(){
SqlSession sqlSession = SqlSeesionUtils.getSqlSession();
SpecialSqlMapper mapper = sqlSession.getMapper(SpecialSqlMapper.class);
List<User> list = mapper.changeTableName("t_user");
list.forEach(System.out::println);
}
获取自增的主键
这种方式主要建立于主键自增的基础上,可以通过mybatis语句,获取自增后的属性值
接口
void insertUser(User user);
配置文件
- useGeneratedKeys:表示当前添加功能使用自增的主键
- keyProperty:将添加的数据的自增主键为实体类类型的参数赋值
<insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
insert into t_user values(null,#{username},#{password},#{age},#{gender},#{email})
</insert>
实现
public void insertUser(){
SqlSession sqlSession = SqlSeesionUtils.getSqlSession();
SpecialSqlMapper mapper = sqlSession.getMapper(SpecialSqlMapper.class);
User user = new User(null, "xxx", "123456", 20, "男", "123456@qq.com");
mapper.insertUser(user);
System.out.println(user);
}
未设置时:
设置后: