Mybatis 官方文档
https://mybatis.org/mybatis-3/zh/configuration.html#environments
最好学习一门技术的方式,还是查阅官方文档,接下的博客也是总结文档内较常用的内容
一、Lombok
学习到这里了,就先介绍一门偷懒神器吧,在自己写一些demo案例中可以用到,但是在公司的代码中除非架构师要求,否则还是尽量不要使用这种会破坏代码规范的插件了
1.官方网站
https://projectlombok.org/
2.介绍
Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.
Never write another getter or equals method again, with one annotation your class has a fully featured builder, Automate your logging variables, and much more.
在个人使用中,对这句话的介绍就是免写getter、setter、equals、toString、constructor方法
3.安装方法
File=>settings=>plugins, 搜索Lombok
就可以看到他的这些特性,点击install安装插件
第二步,就是在maven中引入lombok的maven依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
</dependency>
这样就可以使用了,下面看一下一个简单的例子
4.简单案例
/**
* @program: mybatis-demo
* @description: user表model
* @Data 增加setter、getter、constructor、toString、hasCode方法
* @NoArgsConstructor 增加无参构造方法
* @AllArgsConstructor 增加有参构造方法
* @author: hs
* @create: 2020-09-03 11:00
**/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Integer id;
private String name;
private String sex1;
}
很简单就要将相应的注解添加到对应的类上就可以了,也可以添加到属性上边,常用的注解有@Getter 、@Setter、@ToString、@EqualsAndHashCode、@AllArgsConstructor, @RequiredArgsConstructor、@NoArgsConstructor、@Data
相应的含义可以直接代码上的注释,也可以直接百度搜索一下,太多解释的了
二、resultMap链表查询
resultMap 元素是 MyBatis 中最重要最强大的元素。它可以让你从 90% 的 JDBC ResultSets 数据提取代码中解放出来,并在一些情形下允许你进行一些 JDBC 不支持的操作。实际上,在为一些比如连接的复杂语句编写映射代码的时候,一份 resultMap 能够代替实现同等功能的数千行代码。ResultMap 的设计思想是,对简单的语句做到零配置,对于复杂一点的语句,只需要描述语句之间的关系就行了。
上面是最官方的介绍,简单点说就是对从数据库查询出来的结果和pojo之间做一个属性映射关系
这部分主要讨论的内容是resultMap的association 和collection 这两个标签,他们分别代表的是一对一和一对多的一个关系。
接下来是例子
一对一
Model 类
@Data
public class Role {
private Integer id;
private String name;
private List<User> users;
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Integer id;
private String name;
/**
* 和数据库字段名有不同,可以使用mybatis xml配置中的resultMap方式进行映射
*/
private String sex1;
/**
* 在角色权限控制中,用户和角色之间的关系应该是多对多的,但是目前为了充分展示
* mybatis的一对多和多对一,这里就假定一个用户对应一个角色,一个角色可以和多个用户对应
*/
private Role role;
}
dao层
/**
* 一对一对应关系
*/
public interface UserMapper {
/**
* 子查询一对一对应关系
* @return
*/
List<User> selectAll();
/**
* 查询集合一对一对应关系
* @return
*/
List<User> selectAll1();
}