MyBatis的各种查询功能
一、查询一个实体类对象
-
其结果可被接收的方式
可通过实体类对象接收
可通过List集合接收:即第二种情况
可通过Map结构:即第四种情况
-
Mapper接口
public interface SelectMapper { User getUserById(@Param("id") Integer id); }
-
Mapper映射文件
<mapper namespace="com.atguigu.mybatis.mapper.SelectMapper"> <select id="getUserById" resultType="user"> select * from t_user where id = #{id} </select> </mapper>
-
测试
@Test public void getUserByIdTest() { SqlSession sqlSession = SqlSessionUtils.getSqlSession(); SelectMapper mapper = sqlSession.getMapper(SelectMapper.class); User userById = mapper.getUserById(1); // 输出结果:User{id=1, username='admin', pwd='123456', age=23, sex=男, email='12345@qq.com'} System.out.println(user); }
二、查询一个List集合
-
其结果可被接收的方式
可通过List集合接收
可通过Map结构
-
Mapper接口
public interface SelectMapper { List<User> getAllUser(); }
-
Mapper映射文件
<mapper namespace="com.atguigu.mybatis.mapper.SelectMapper"> <select id="getAllUser" resultType="user"> select * from t_user </select> </mapper>
-
测试
@Test public void getAllUserTest() { SqlSession sqlSession = SqlSessionUtils.getSqlSession(); SelectMapper mapper = sqlSession.getMapper(SelectMapper.class); List<User> allUser = mapper.getAllUser(); allUser.forEach(user -> System.out.println(user)); }
三、查询单个数据
-
mybatis自带的typeAlias
Type Integer String Map List Double Iterator Alias int/integer string map list double iterator -
Mapper接口
public interface SelectMapper { int getCount(); }
-
Mapper映射文件
注:一定要有resultType
<select id="getCount" resultType="Integer"> select count(*) from t_user </select>
-
测试
@Test public void getCountTest() { SqlSession sqlSession = SqlSessionUtils.getSqlSession(); SelectMapper mapper = sqlSession.getMapper(SelectMapper.class); int count = mapper.getCount(); System.out.println("count = " + count); }
四、查询一条数据为Map集合
-
mapper接口
public interface SelectMapper { Map<String,Object> getUserByIdToMap(@Param("id") Integer id); }
-
mapper映射文件
<select id="getUserByIdToMap" resultType="map"> select * from t_user where id = #{id} </select>
-
测试
@Test public void getUserByIdToMapTest() { SqlSession sqlSession = SqlSessionUtils.getSqlSession(); SelectMapper mapper = sqlSession.getMapper(SelectMapper.class); Map<String, Object> userByIdToMap = mapper.getUserByIdToMap(1); // 输出结果:{sex=男, id=1, pwd=123456, age=23, email=12345@qq.com, username=admin} System.out.println(userByIdToMap); }
五、查询多条数据为Map集合
-
@MapKey()
用来设置Map集合的键值对
会将查询出来的某条数据的某一个字段作为Map集合的键,
会将查询出来的某条数据作为Map集合的值
-
Mapper接口
public interface SelectMapper { @MapKey("id") Map<String,Object> getAllToMap(); }
-
Mapper映射文件
<select id="getAllToMap" resultType="map"> select * from t_user </select>
-
测试
@Test public void getAllToMapTest() { SqlSession sqlSession = SqlSessionUtils.getSqlSession(); SelectMapper mapper = sqlSession.getMapper(SelectMapper.class); Map<String, Object> allToMap = mapper.getAllToMap(); /* 输出结果: {1={sex=男, id=1, pwd=123456, age=23, email=12345@qq.com, username=admin}, 2={sex=男, id=2, pwd=123456, age=23, email=12345@qq.com, username=admin}, 3={sex=男, id=3, pwd=123456, age=23, email=12345@qq.com, username=admin}, 4={sex=男, id=4, pwd=123456, age=23, email=12345@qq.com, username=李四}, 10={sex=女, id=10, pwd=123456, age=23, email=zhangsan@qq.com, username=张三}} */ System.out.println(allToMap); }