1.MBG(mybatis generator)和通用mapper对比
MBG | 通用mapper |
---|---|
根据表生成实体类,dao,mapper文件 | 通过实体类生成sql语句 |
注:
- 使用时可先用MBG生成实体类,把mapper与dao接口删除,再使用通用mapper.(MBG的使用)
- 通用mapper可以完成几乎所有的单表操作,但不支持表连接。如果需要使用多表操作,需要自行定义相应方法并书写mapper文件,与之前无异,它与通用mapper互不影响。
2.通用mapper的使用
2.1 导入jar(pom.xml)
<!-- tk.mybatis/mapper-spring-boot-starter -->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
</dependency>
<!--数据源-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.19</version>
</dependency>
<!--数据库-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
2.2 书写配置文件(application.yml)
- 这里注意application.yml与之前无异
- 如果不使用自己的sql语句(不自己写mapper),可以不用写 mapper-locations:
2.3 dao接口继承Mapper<>接口
例:
import tk.mybatis.mapper.common.Mapper;
public interface UserDAO extends Mapper<User> {
}
泛型传入操作的实体类
2.4 相关注解
- @Table(name = “t_user”)
作用在类上,指定数据库表名 - @Id
作用在属性上,表名当前属性为数据库主键 - @Column(name = “age”)
作用在属性上,用来指定数据库表中的字段名 - @Transient
作用在属性上,注明当前列不是数据库中的字段 - @KeySql(useGeneratedKeys = true)
用于mysql数据库;作用在属性上,当前主键为自增长 - @KeySql(sql = “select 序列名.nextval from dual”, order = ORDER.BEFORE)
用于Oracle数据库;作用在属性上,当前主键为自增长