mysql resulttype_MyBatis-resultType 与 resultMap 中的几种返回类型

一、返回集合

1.返回JavaBean集合

public List selectMyUserByNameLike(String name);

select * from myuser where name like #{name}

测试方法

public static voidmain(String[] args) {

SqlSession session= null;try{

InputStream inputStream= Resources.getResourceAsStream("mybatis-config.xml");

SqlSessionFactory sqlSessionFactory= newSqlSessionFactoryBuilder().build(inputStream);

session=sqlSessionFactory.openSession();

MyUserMapper mapper= session.getMapper(MyUserMapper.class);

List myUsers = mapper.selectMyUserByNameLike("%a%");

System.out.println(myUsers);

}catch(IOException e) {

e.printStackTrace();

}finally{if (session != null) {

session.close();

}

}

}

6d4bdba59052e14d16091df9dc0e4203.png

2.返回 Map 集合

select * from myuser

af90b11c4a1334f5b4fa87920a3558f4.png

二、返回 Map

1.一条记录

public Map selectMyUserById(Integer id);

select * from myuser where id = #{id}

060663513f72f834d058cc9e3216a556.png

2.多条记录,需要指定 Map 的 Key 和 Value 的类型

//指定 Map 的 Key 从记录中的 id 列获取

@MapKey("id")public Map selectMyUserByGtId(Integer id);

select * from myuser where id > #{id}

057b8c56200de140bf3e3fc443c680ee.png

三、返回 resultMap 自定义结果集封装

关于自动映射封装的配置

默认数据库字段与 JavaBean 对应不上时可开启驼峰命名或查询时使用别名

1.自定义 JavaBean 的封装

确认是否成功可以关掉 MyBatis 的自动映射

public MyUser selectMyUserById(Integer id);

select * from myuser where id = #{id}

b38f21e452cfc1709003969ef6dcef74.png

2.关联查询的封装,一对一,JavaBean 属性包含 JavaBean

b05dc7478e7661e0573d21d9b90e9225.png

public MyUser selectMyUserById(Integer id);

直接调用属性赋值

SELECT m.id, m.name, m.age, m.did, d.name AS dname FROM myuser m,dept d WHERE m.did = d.id AND m.id = #{id}

2a4e155940f608e00203c60b3813e3cf.png

使用 association

SELECT m.id, m.name, m.age, m.did, d.name AS dname FROM myuser m,dept d WHERE m.did = d.id AND m.id = #{id}

使用 association 二次查询,即有两条 SQL

SELECT * FROM myuser WHERE id = #{id}

/p>

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

select * from dept where id = #{id}

7f99b1110bd267c7d5f6cae2d20eeaac.png

开启懒加载:在没有使用 Dept 的属性时,则只会加载 MyUser 的属性。即只会发送一条 SQL 语句,要使用 Dept 属性时才会发送第二条 SQL。不会一次性发送两条 SQL

3.关联查询的封装,一对多,JavaBean 属性包含 JavaBean 的集合

1193fcc8a4edfe9e520d955164dff06b.png

使用 association

public Dept getDeptById(Integer id);

SELECT m.id,m.name,m.age,m.did,d.name AS dname FROM myuser m,dept d WHERE m.did = d.id AND d.id = #{id}

f65eaf779c06464d59cdc493a16f27fa.png

关闭懒加载,使用二次查询

public Dept getDeptByIdStep(Integer did);

select * from dept where id = #{id}

public List selectMyUserByDid(Integer dId);

select * from myuser where dId = #{did}

e7abb1518dd35bc89f2a46875f8114d9.png

4.鉴别器 discriminator

SELECT * FROM myuser WHERE id = #{id}

select * from dept where id = #{id}

2f8ada759e8c291e46eed92484988a67.png

16915c2740532c941e0703196efb595b.png

上面测试中使用的实体类与数据

public classDept {privateInteger id;privateString name;private List myUsers;

public classMyUser {privateInteger id;privateString name;privateInteger age;private Dept dept;

26c1d7f7fc944b9554f0239c7e3c63ec.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值