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

视频教程链接: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<Map<String, Object>> getAllUserToMap();
    @MapKey("id")
    Map<String, Object> getAllUserToMap();
}

1、查询一个实体类对象

SelectMapper接口:

public interface SelectMapper {
    /**
     * 根据id查询用户信息
     */
    User getUserById(@Param("id") Integer 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();
}

配置文件:

<!--    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();
}

配置文件:

<!--    Integer getCount();-->
<!--    integer写大小写都可以,写 Integer/integer/_int/_integer  都可以,都是java.lang.Integer的别名-->
    <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());
    }

常用类型别名

在这里插入图片描述
在这里插入图片描述

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

SelectMapper接口:

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

配置文件:

<!--        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<Map<String, Object>> getAllUserToMap();

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

配置文件:

<!--        Map<String, Object> getAllUserToMap();-->
    <select id="getAllUserToMap" resultType="map">
        select * from t_user
    </select>

测试类:


  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值