MyBatis的各种查询功能介绍&使用&代码

发布于:2024-04-27 ⋅ 阅读:(33) ⋅ 点赞:(0)

一、查询一个实体类对象

/**
 * 根据用户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>
/**
     * 根据用户id查询用户信息
     */
    @Test
    public void testGetUserById(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
        User user = mapper.getUserById(1);
        System.out.println(user);
    }

二、查询一个list集合

当查询的数据为多条时,不能使用实体类作为返回值,否则会抛出异常TooManyResultsException;但是若查询的数据只有一条,可以使用实体类或集合作为返回值
 /**
     * 查询所有用户信息
     * @return
     */
    List<User> getAllUser();
    <!--List<User> getAllUser();-->
    <select id="getAllUser" resultType="User">
        select * from tb_user;
    </select>
/**
     * 查询所有用户信息
     */
    @Test
    public void testGetAllUser(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
        List<User> list = mapper.getAllUser();
        list.forEach(System.out::println);
    }

三、查询单个数据

/**
 * 查询用户的总记录数
 * @return
 * 在MyBatis中,对于Java中常用的类型都设置了类型别名
 * 例如: java.lang.Integer-->int|integer
 * 例如: int-->_int|_integer
 * 例如: Map-->map,List-->list 
 */
int getCount();
<!--Integer getCount();-->
    <select id="getCount" resultType="int">
        select count(*) from tb_user;
    </select>
/**
     * 查询用户的总数量
     */
    @Test
    public void testGetCount(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
        Integer count = mapper.getCount();
        System.out.println(count);
    }

四、查询一条数据为map集合

/**
     * 根据id查询用户信息为map集合
     * @param id
     * @return
     */
    Map<String,Object> getUserByIdToMap(@Param("id") Integer id);
<!--Map<String,Object> getUserByIdToMap(@Param("id") Integer id);-->
    <select id="getUserByIdToMap" resultType="map">
        select * from tb_user where id = #{id};
    </select>
/**
     * 根据id查询用户信息为map集合
     */
    @Test
    public void testGetUserByIdToMap(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
        Map<String, Object> map = mapper.getUserByIdToMap(1);
        System.out.println(map);
    }

五、查询多条数据为map集合

 /**
     * 查询所有用户信息为map集合
     * @return
     *  1、将表中的数据以map集合的方式查询,一条数据对应一个map;若有多条数据,就会产生多个map集合,此
     *时可以将这些map放在一个list集合中获取
     * List<Map<String, Object>> getAllUserToMap();
     *  2、将表中的数据以map集合的方式查询,一条数据对应一个map;若有多条数据,就会产生多个map集合,此
     *时可以将这些map放在一个list集合中获取
     * @MapKey("id")
     *     Map<String, Object> getAllUserToMap();
     */
    @MapKey("id")
    Map<String,Object> getAllUserToMap();
<!--Map<String, Object> getAllUserToMap();-->
    <select id="getAllUserToMap" resultType="map">
        select * from tb_user
    </select>
 /**
     * 查询所有用户信息为map集合
     */
    @Test
    public void testGetAllUserToMap(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
        Map<String, Object> map = mapper.getAllUserToMap();
        System.out.println(map);
    }