【MyBatis笔记】5 - MyBatis的各种查询功能

文章目录

  • 1、查询一个实体类对象
  • 2、查询一个list集合
  • 3、查询单个数据
    • 常用类型别名
  • 4、查询一条数据为map集合
  • 查询多条数据为map集合

视频教程链接:https://www.bilibili.com/video/BV1VP4y1c7j7?p=34&spm_id_from=pageDriver

接口类综合代码:

public interface SelectMapper {
    /**
     * 根据id查询用户信息
     */
    User getUserById(@Param("id") Integer id);

    /**
     * 查询所有用户信息
     */
    List<User> getAllUser();

    /**
     * 查询用户信息的总记录数
     */
    Integer getCount();

    /**
     * 根据id查询用户信息为一个map集合
     */
    Map<String, Object> getUserByIdToMap(Integer id);

    /**
     * 查询所有用户信息为map集合
     */
//    List> getAllUserToMap();
    @MapKey("id")
    Map<String, Object> getAllUserToMap();
}

1、查询一个实体类对象

SelectMapper接口:

public interface SelectMapper {
    /**
     * 根据id查询用户信息
     */
    User getUserById(@Param("id") Integer id);
}

配置文件:


    <select id="getUserById" resultType="User">
        select * from t_user where id = #{id}
    select>

测试类:

    /**
     * MyBatis的各种查询功能:
     * 1。 若查询出的数据只有一条,可以通过实体类对象 / list集合 / map集合 来接收
     * 2。 若查询处的数据有多条,一定不能通过实体类对象来接收,此时会抛出TooManyResultsException
     */
    @Test
    public void testGetUserById(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
        User userById = mapper.getUserById(4);
        System.out.println(userById);
    }

2、查询一个list集合

SelectMapper接口:

public interface SelectMapper {
	/**
     * 查询所有用户信息
     */
    List<User> getAllUser();
}

配置文件:


    <select id="getAllUser" resultType="User">
        select * from t_user
    select>

测试类:

    /**
     * MyBatis的各种查询功能:
     * 1。 若查询出的数据只有一条,可以通过实体类对象 / list集合 / map集合 来接收
     * 2。 若查询处的数据有多条,一定不能通过实体类对象来接收,此时会抛出TooManyResultsException
     */
    @Test
    public void testGetUserById(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
        List<User> allUser = mapper.getAllUser();
        allUser.forEach(user -> System.out.println(user));
    }

3、查询单个数据

SelectMapper接口:

public interface SelectMapper {
    /**
     * 查询用户信息的总记录数
     */
    Integer getCount();
}

配置文件:



    <select id="getCount" resultType="java.lang.Integer">
        select count(*) from t_user
    select>

测试类:

    /**
     * 获取记录数
     *
     * MyBatis中设置了默认的类型别名
     * Java.lang.Integer -> int, integer
     * int -> _int, _integer
     * Map -> map
     * List -> list
     */
    @Test
    public void testGetCount(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
        System.out.println(mapper.getCount());
    }

常用类型别名

【MyBatis笔记】5 - MyBatis的各种查询功能_第1张图片
【MyBatis笔记】5 - MyBatis的各种查询功能_第2张图片

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

SelectMapper接口:

public interface SelectMapper {
    /**
     * 根据id查询用户信息为一个map集合
     */
    Map<String, Object> getUserByIdToMap(Integer id);
}

配置文件:


    <select id="getUserByIdToMap" resultType="map">
        select * from t_user where id = #{id}
    select>

测试类:

    /**
     * 如果没有实体类对象,就把它映射成map集合
     * 从数据库中查询数据,将其映射为map集合
     * 例如把它传到网页端,就映射成json对象,所以转成map很常用
     *
     * 以字段为键
     */
    @Test
    public void testgetUserByIdToMap(){
        SqlSession sqlSession = SqlSessionUtils.getSqlSession();
        SelectMapper mapper = sqlSession.getMapper(SelectMapper.class);
        System.out.println(mapper.getUserByIdToMap(4));
    }

查询多条数据为map集合

SelectMapper接口:

public interface SelectMapper {
    /**
     * 查询所有用户信息为map集合,每一条记录是一个map
     */
     //方式一:
//    List> getAllUserToMap();

	//方式二:
    @MapKey("id")
    Map<String, Object> getAllUserToMap();
}

配置文件:


    <select id="getAllUserToMap" resultType="map">
        select * from t_user
    select>

测试类:


你可能感兴趣的:(#,MyBatis,java,intellij-idea,java-ee)