[MyBatis系列⑥]注解开发

 作者简介:准大三本科网络工程专业在读,持续学习Java,努力输出优质文章

⭐MyBatis系列①:增删改查

⭐MyBatis系列②:两种Dao开发方式

⭐MyBatis系列③:动态SQL

⭐MyBatis系列④:核心配置文件详解

⭐MyBatis系列⑤:多表查询

1、基本步骤

步骤如下:

编写接口,在接口方法上面使用对应的注解,配置相应的SQL语句

编写测试方法

在mybatis核心配置文件中修改映射信息。

2、常用注解

首先是基本的CRUD来学习,后面再介绍复杂映射多表操作。

注解

说明

@Insert

实现新增

@Update

实现更新

@Delete

实现删除

@Select

实现查询

@Result

实现结果集封装

@Results

可以与@Result 一起使用,封装多个结果集

@One

实现一对一结果集封装

@Many

实现一对多结果集封装

代码如下:

①接口及其接口方法:

[MyBatis系列⑥]注解开发_第1张图片

②测试方法:

[MyBatis系列⑥]注解开发_第2张图片

③核心配置文件加载映射:

[MyBatis系列⑥]注解开发_第3张图片

3、复杂映射

实现复杂关系映射之前可以在映射文件中通过配置来实现,使用注解开发后,可以使用@Results注解 ,@Result注解,@One注解,@Many注解组合完成复杂关系的配置。

注解

说明

@Results

代替的是标签该注解中可以使用单个@Result注解,也可以使用@Result集合。

使用格式:

@Results( {@Result (),@Result () } )

@Results( @Result () )

@Result

代替了标签和标签

@Result 中属性介绍 :

- column:数据库的列名
- property:需要装配的属性名
- one:需要使用的@One 注解(@Result(one=@One) ()))
- many:需要使用的@Many 注解(@Result(many=@many)()))

@One (一对一)

代替了标签,是多表查询的关键,在注解中用来指定子查询返回单一对象。

@One 注解属性介绍 :

- select: 指定用来多表查询的 sqlmapper

使用格式:@Result(column="",property="",one=@One(select=""))

@Many (多对一)

代替了标签, 是多表查询的关键,在注解中用来指定子查询返回对象集合。

使用格式:@Result(property="",column="",many=@Many(select=""))

3.1、一对一

用户表和订单表的关系为,一个用户有多个订单,一个订单只从属于一个用户。

一对一查询的需求:查询一个订单,与此同时查询出该订单所属的用户

[MyBatis系列⑥]注解开发_第4张图片

3.1.1、xml回顾

在使用xml配置的时候,对应的sql语句为:

select ordersquery.*, userquery.username,userquery.`password`,userquery.birthday from ordersquery, userquery where ordersquery.userID = userquery.id;

[MyBatis系列⑥]注解开发_第5张图片

[MyBatis系列⑥]注解开发_第6张图片

3.1.2、注解

使用注解配置的时候,需要把之前的SQL语句一分为二:

[MyBatis系列⑥]注解开发_第7张图片

[MyBatis系列⑥]注解开发_第8张图片

[MyBatis系列⑥]注解开发_第9张图片

3.2、一对多

用户表和订单表的关系为,一个用户有多个订单,一个订单只从属于一个用户

一对多查询的需求:查询一个用户,与此同时查询出该用户具有的订单

[MyBatis系列⑥]注解开发_第10张图片

3.2.1、xml回顾

在使用xml配置的时候,对应的sql语句为:

select userquery.*,ordersquery.id as orderID,ordersquery.ordertime,ordersquery.total from userquery left join ordersquery on userquery.id = ordersquery.userID;

[MyBatis系列⑥]注解开发_第11张图片

[MyBatis系列⑥]注解开发_第12张图片

3.2.2、注解

使用注解配置的时候,需要把之前的SQL语句一分为二:

[MyBatis系列⑥]注解开发_第13张图片

[MyBatis系列⑥]注解开发_第14张图片

3.3、多对多

用户表和角色表的关系为,一个用户有多个角色,一个角色被多个用户使用

多对多查询的需求:查询用户同时查询出该用户的所有角色

[MyBatis系列⑥]注解开发_第15张图片

3.3.1、xml回顾

在使用xml配置的时候,对应的sql语句为:

select userquery.id,userquery.username,userquery.`password`,userquery.birthday,rolequery.id AS roleID,rolequery.rolename from userquery LEFT JOIN user_role ON userquery.id = user_role.user_id INNER JOIN rolequery ON user_role.role_id = rolequery.id;

[MyBatis系列⑥]注解开发_第16张图片

[MyBatis系列⑥]注解开发_第17张图片

3.3.2、注解

使用注解配置的时候,需要把之前的SQL语句一分为二:

[MyBatis系列⑥]注解开发_第18张图片

[MyBatis系列⑥]注解开发_第19张图片

[MyBatis系列⑥]注解开发_第20张图片

4、⭐注意事项

在使用注解的时候,不管是“一对一”、“一对多”还是“多对多”,都涉及到一个“对独立的@Result封装”的过程,其中有一个参数为column,这个传的是数据库类型,但是传的是来源于第一条SQL查询的数据库的表单,如下:

[MyBatis系列⑥]注解开发_第21张图片

行文至此,烦请给个三连支持一下。

您的三连支持,是我创作的最大动力

你可能感兴趣的:(JavaEE,数据库,mybatis,mysql,sql,java-ee,Java,注解)