目录
- 一、查询一个实体类对象
- 二、查询一个list集合
- 三、查询单个数据
- 四、查询一个数据为map集合
- 五、查询多条数据为map集合
一、查询一个实体类对象
①创建SelectMapper接口
若sql语句查询的结果为多条时,一定不能以实现类类型作为方法的返回值
否则会抛出异常TooManyResultsException
若sql语句查询的结果为1条时,此时可以使用实体类类型或list集合类型作为方法的返回值
/**
* 根据id查询用户信息
* @param id
* @return
*/
User getUserById(@Param("id") Integer id);
②创建SelectMapper配置文件
<!-- User getUserById(@Param("id") Integer id);-->
<select id="getUserById" resultType="User">
select * from t_user where id = #{id}
</select>
③创建测试类
@Test
public void testGetUserById(){
SqlSession sqlSession = SqlSessionUtil.getSqlSession();
SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
User user = mapper.getUserById(2);
System.out.println(user);
sqlSession.close();
}
二、查询一个list集合
①创建SelectMapper接口
/**
* 查询所有的用户信息
* @return
*/
List<User> getAllUser();
②创建SelectMapper配置文件
<!-- List<User> getAllUser();-->
<select id="getAllUser" resultType="User">
select * from t_user
</select>
③创建测试类
@Test
public void testGetAllUser(){
SqlSession sqlSession = SqlSessionUtil.getSqlSession();
SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
List<User> allUser = mapper.getAllUser();
allUser.forEach(System.out::println);
sqlSession.close();
}
三、查询单个数据
①创建SelectMapper接口
/**
* 查询用户的总记录数
* @return
*/
Integer getCount();
②创建SelectMapper配置文件
在MyBatis中,对于Java中常用的类型都设置了类型别名
例如: java.lang.Integer -> int/integer
例如: int -> _int/_integer
例如: Map -> map,
例如: List -> list
<!-- Integer getCount();-->
<!-- <select id="getCount" resultType="java.lang.Integer">-->
<select id="getCount" resultType="Integer">
select count(*) from t_user
</select>
③创建测试类
@Test
public void testGetCount(){
SqlSession sqlSession = SqlSessionUtil.getSqlSession();
SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
Integer count = mapper.getCount();
System.out.println(count);
sqlSession.close();
}
四、查询一个数据为map集合
①创建SelectMapper接口
/**
* 根据用户id查询用户信息为map集合
* @param id
* @return
*/
Map<String, Object> getUserToMap(@Param("id") int id);
②创建SelectMapper配置文件
<!--Map<String, Object> getUserToMap(@Param("id") int id);-->
<!--结果: {password=123456, sex=男 , id=1, age=23, username=admin}-->
<select id="getUserToMap" resultType="map">
select * from t_user where id = #{id}
</select>
③创建测试类
@Test
public void testGetUserToMap(){
SqlSession sqlSession = SqlSessionUtil.getSqlSession();
SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
Map<String, Object> userToMap = mapper.getUserToMap(2);
System.out.println(userToMap);
sqlSession.close();
}
五、查询多条数据为map集合
①创建SelectMapper接口
方式一:
/**
* 查询所有用户信息为map集合
* @return
* 将表中的数据以map集合的方式查询,一条数据对应一个map;若有多条数据,就会产生多个map集合,此
时可以将这些map放在一个list集合中获取
*/
// List<Map<String, Object>> getAllUserToMap();
方式二:
/**
* 查询所有用户信息为map集合
* @return
* 将表中的数据以map集合的方式查询,一条数据对应一个map;若有多条数据,就会产生多个map集合,并
且最终要以一个map的方式返回数据,此时需要通过@MapKey注解设置map集合的键,值是每条数据所对应的
map集合
*/
@MapKey("id")
Map<String, Object> getAllUserToMap();
②创建SelectMapper配置文件
<!--Map<String, Object> getAllUserToMap();-->
<select id="getAllUserToMap" resultType="map">
select * from t_user
</select>
③创建测试类
@Test
public void testGetAllUserToMap(){
SqlSession sqlSession = SqlSessionUtil.getSqlSession();
SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
// List<Map<String, Object>> allUserToMap = mapper.getAllUserToMap();
// allUserToMap.forEach(System.out::println);
Map<String, Object> allUserToMap = mapper.getAllUserToMap();
System.out.println(allUserToMap);
sqlSession.close();
}