Mybatis07-Mybatis的各种查询功能

1、查询一个实体对象

1.1、mapper接口中的方法

/**
 * 根据id查询用户信息
 */
//User getUserById(@Param("id") Integer id);
List<User> getUserById(@Param("id") Integer id);

1.2、mapper接口映射文件

<!-- User getUserById(@Param("id") Integer id); -->
<select id="getUserById" resultType="User">
    select * from mybatis.user where id = #{id}
</select>

1.3、测试方法及其对应输出

  • 测试方法
@Test
public void testGetUserById() {
    SqlSession sqlSession = SqlSessionUtils.getSqlSession();
    SelectMapper selectMapper = sqlSession.getMapper(SelectMapper.class);
    System.out.println(selectMapper.getUserById(3));
}
  • 结果
    在这里插入图片描述

2、查询一个List集合

2.1、mapper接口中的方法

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

2.2、mapper接口映射文件

<!-- List<User> getAllUser(); -->
<select id="getAllUser" resultType="User">
    select * from mybatis.user
</select>

2.3、测试方法及其对应输出

@Test
public void testGetAllUser() {
    SqlSession sqlSession = SqlSessionUtils.getSqlSession();
    SelectMapper selectMapper = sqlSession.getMapper(SelectMapper.class);
    System.out.println(selectMapper.getAllUser());
}

3、查询单个数据

3.1、mapper接口中的方法

/**
 * 查询用户的总记录数
 */
Integer getUserCount();

3.2、mapper接口映射文件

<!-- Integer getUserCount(); -->
<!--    <select id="getUserCount" resultType="int">-->
<!--    <select id="getUserCount" resultType="java.lang.Integer">-->
<!--    <select id="getUserCount" resultType="Int">-->
<select id="getUserCount" resultType="Integer">
    select count(*) from mybatis.user
</select>

3.3、测试方法及其对应输出

  • 测试代码
@Test
public void testGetUserCount() {
    SqlSession sqlSession = SqlSessionUtils.getSqlSession();
    SelectMapper selectMapper = sqlSession.getMapper(SelectMapper.class);
    System.out.println(selectMapper.getUserCount());
}
  • 结果
    在这里插入图片描述

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

4.1、mapper接口中的方法

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

4.2、mapper接口映射文件

<!-- Map<String, Object> getUserByIdToMap(@Param("id") Integer id); -->
<select id="getUserByIdToMap" resultType="map">
    select * from mybatis.user where id = #{id}
</select>

4.3、测试方法及其对应输出

  • 测试代码
@Test
public void testGetUserByIdToMap() {
    SqlSession sqlSession = SqlSessionUtils.getSqlSession();
    SelectMapper selectMapper = sqlSession.getMapper(SelectMapper.class);
    System.out.println(selectMapper.getUserByIdToMap(3));
}
  • 结果
    在这里插入图片描述

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

5.1、mapper接口中的方法

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

5.2、mapper接口映射文件

<!-- Map<String, Object> getAllUserByIdToMap(); -->
<select id="getAllUserByIdToMap" resultType="map">
    select * from mybatis.user
</select>

5.3、测试方法及其对应输出

  • 测试代码
@Test
public void testGetAllUserByIdToMap() {
    SqlSession sqlSession = SqlSessionUtils.getSqlSession();
    SelectMapper selectMapper = sqlSession.getMapper(SelectMapper.class);
    System.out.println(selectMapper.getAllUserByIdToMap());
}
  • 结果
    在这里插入图片描述

6、总结

6.1、若查询出的数据只有一条

  1. 可以通过实体类对象接收
  2. 可以通过List集合接收
  3. 可以通过map集合接收
  • map集合接收的结果:{password=123, sex=男, id=3, age=23, username=sweet}

6.2、若查询出的数据有多条

  1. 可以通过实体类类型的list集合接收
  2. 可以通过map类型的list集合接收
  3. 可以在mapper接口的方法上添加@MapKey注解,此时就可以将每条数据转换的map集合作为值,以某个字段的值作为键,放在同一个map集合中
  4. 注意:一定不能通过实体类对象接收,此时会抛出异常TooManyResultsException

6.3、Mybatis中的默认类型别名

AliasMapped Type
_bytebyte
_longlong
_shortshort
_intint
_integerint
_doubledouble
_floatfloat
_booleanboolean
stringString
byteByte
longLong
shortShort
intInteger
integerInteger
doubleDouble
floatFloat
booleanBoolean
dateDate
decimalBigDecimal
bigdecimalBigDecimal
objectObject
mapMap
hashmapHashMap
listList
arraylistArrayList
collectionCollection
iteratorIterator

示例:

<!-- Integer getUserCount(); -->
<!--    <select id="getUserCount" resultType="int">-->
<!--    <select id="getUserCount" resultType="java.lang.Integer">-->
<!--    <select id="getUserCount" resultType="Int">-->
<select id="getUserCount" resultType="Integer">
   select count(*) from mybatis.user
</select>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值