1、查询一个实体类对象
/** * 根据用户id查询用户信息 * @param id * @return */ User getUserById(@Param("id") int id);
<!--User getUserById(@Param("id") int id);--> <select id="getUserById" resultType="User"> select * from t_user where id = #{id} </select>
2、查询一个list集合
/** * 查询所有用户信息 * @return */ List<User> getUserList();
<!--List<User> getUserList();--> <select id="getUserList" resultType="User"> select * from t_user </select>
3、查询单个数据
/** * 查询用户的总记录数 * @return * 在MyBatis中,对于Java中常用的类型都设置了类型别名 * 例如:java.lang.Integer-->int|integer * 例如:int-->_int|_integer * 例如:Map-->map,List-->list */ int getCount();
<!--int getCount();--> <select id="getCount" resultType="_integer"> select count(id) from t_user </select>
4、查询一条数据为map集合
/** * 根据用户id查询用户信息为map集合 * @param id * @return */ Map<String, Object> getUserToMap(@Param("id") int id);
<!--Map<String, Object> getUserToMap(@Param("id") int id);--> <select id="getUserToMap" resultType="map"> select * from t_user where id = #{id} </select> <!--结果:{password=123456, sex=男, id=1, age=23, username=admin}-->
5、查询多条数据为map集合
方式一:
/** * 查询所有用户信息为map集合 * @return * 将表中的数据以map集合的方式查询,一条数据对应一个map;若有多条数据,就会产生多个map集合,此 时可以将这些map放在一个list集合中获取 */ List<Map<String, Object>> getAllUserToMap();
<!--Map<String, Object> getAllUserToMap();--> <select id="getAllUserToMap" resultType="map"> select * from t_user </select>
方式二:
/** * 查询所有用户信息为map集合 * @return * 将表中的数据以map集合的方式查询,一条数据对应一个map;若有多条数据,就会产生多个map集合,并 且最终要以一个map的方式返回数据,此时需要通过@MapKey注解设置map集合的键,值是每条数据所对应的 map集合 */ @MapKey("id") Map<String, Object> getAllUserToMap();
<!--Map<String, Object> getAllUserToMap();--> <select id="getAllUserToMap" resultType="map"> select * from t_user </select> 结果: <!-- { 1={password=123456, sex=男, id=1, age=23, username=admin}, 2={password=123456, sex=男, id=2, age=23, username=张三}, 3={password=123456, sex=男, id=3, age=23, username=张三} } -->
根据接口的类型,然后在映射文件中的resultType中填写就行
List<Map<String, Object>> getAllUserToMap()
<!--Map<String, Object> getAllUserToMap();--> <select id="getAllUserToMap" resultType="map"> select * from t_user </select>
这里可以看到接口的类型是List<Map<String, Object> 但是resultType="map",也就是说查询的结果类型依旧是map,将数据存了map中,自动封装到list中
代理模式,通过反射得到的返回值类型list,然后将数据存入list中
实例
public interface SelectMapper { /** * 根据id查询用户信息 */ List<User> getUserById(@Param("id") Integer id); /** * 查询所有的用户信息 */ List<User> getAllUser(); /** * 查询用户信息的总记录数 */ Integer getCount(); /** * 根据id查询用户信息为一个map集合 */ Map<String, Object> getUserByIdToMap(@Param("id") Integer id); /** * 查询所有用户信息为map集合 */ //List<Map<String, Object>> getAllUserToMap(); @MapKey("id") Map<String, Object> getAllUserToMap(); }
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.atguigu.mybatis.mapper.SelectMapper"> <!--User getUserById(@Param("id") Integer id);--> <select id="getUserById" resultType="User"> select * from t_user where id = #{id} </select> <!--List<User> getAllUser();--> <select id="getAllUser" resultType="User"> select * from t_user </select> <!--Integer getCount();--> <select id="getCount" resultType="_int"> select count(*) from t_user </select> <!--Map<String, Object> getUserByIdToMap(@Param("id") Integer id);--> <select id="getUserByIdToMap" resultType="map"> select * from t_user where id = #{id} </select> <!--Map<String, Object> getAllUserToMap();--> <select id="getAllUserToMap" resultType="map"> select * from t_user </select> </mapper>
public class SelectMapperTest { /** * MyBatis的各种查询功能: * 1、若查询出的数据只有一条 * a>可以通过实体类对象接收 * b>可以通过list集合接收 * c>可以通过map集合接收 * 结果:{password=123456, sex=男, id=3, age=23, email=12345@qq.com, username=admin} * 2、若查询出的数据有多条 * a>可以通过实体类类型的list集合接收 * b>可以通过map类型的list集合接收 * c>可以在mapper接口的方法上添加@MapKey注解,此时就可以将每条数据转换的map集合作为值,以某个字段的值作为键,放在同一个map集合中 * 注意:一定不能通过实体类对象接收,此时会抛异常TooManyResultsException * * MyBatis中设置了默认的类型别名 * java.lang.Integer-->int,integer * int-->_int,_integer * Map-->map * String-->string */ @Test public void testGetAllUserToMap(){ SqlSession sqlSession = SqlSessionUtils.getSqlSession(); SelectMapper mapper = sqlSession.getMapper(SelectMapper.class); System.out.println(mapper.getAllUserToMap()); } @Test public void testGetUserByIdToMap(){ SqlSession sqlSession = SqlSessionUtils.getSqlSession(); SelectMapper mapper = sqlSession.getMapper(SelectMapper.class); System.out.println(mapper.getUserByIdToMap(3)); } @Test public void testGetCount(){ SqlSession sqlSession = SqlSessionUtils.getSqlSession(); SelectMapper mapper = sqlSession.getMapper(SelectMapper.class); System.out.println(mapper.getCount()); } @Test public void testGetAllUser(){ SqlSession sqlSession = SqlSessionUtils.getSqlSession(); SelectMapper mapper = sqlSession.getMapper(SelectMapper.class); List<User> user = mapper.getAllUser(); System.out.println(1); } @Test public void testGetUserById(){ SqlSession sqlSession = SqlSessionUtils.getSqlSession(); SelectMapper mapper = sqlSession.getMapper(SelectMapper.class); System.out.println(mapper.getUserById(3)); } }
标签:map,功能,--,查询,集合,user,MyBatis,id From: https://www.cnblogs.com/dzs894330350/p/16727107.html