DAO层的实现的规律
-
实体类与数据表存在对应关系,并且是由规律的--只要知道了数据表的结构,就能够生成实体类
-
所有实体类的DAO接口中定义的方法也是有规律的,不同点就是实体类型不同
-
UserDAO
public interface UserDAO extends GeneralDAO<User>{ public int insert(User t); }
-
GoodsDao
public interface GoodsDAO extends GeneralDAO<Goods> { public int insert(Goods t); }
-
GeneralDAO
public interface GeneralDAO<T>{ //通⽤⽅法 public int insert(T t); public T queryOneByPrimarykey(int i); }
-
-
对于GeneralDAO接口定义的数据库操作方法应为使用了泛型,无需映射文件;对于UserDAO和GoodsDAO都需要映射文件,所有DAO的相同操作的映射文件也是有规律可循的
-
UserMapper
<insert id="insert"> insert into users(user_id,username) values(#{userId},# {username}) </insert>
@Table("users") public class User{ @Id @Column("user_id") private int userId; @Column("username") private String username; }
-
GoodsMapper
<insert id="insert"> insert into goods(goods_id,goods_name) values(#{goodsId},# {goodsName}) </insert>
@Table("product") public class Goods{ @Id @Column("goods_id") private int goodsId; @Column("goods_name") private String goodsName; }
-
tkMapper简介
基于Mybatis提供了很多第三方插件,这些插件通常可以完成数据操作方法的封装(GeneralDAO)、数据库你想工程工作(根据数据表生成实体类、生成映射文件)
MyBtais-plus
tkMapper
tkMapper就是一个MyBatis插件,是在MyBtais的基础上提供了很多工具,让开发变得简单,提高开发效率
-
tkMapper提供了针对单标通用的数据库操作方法
-
逆向工程(根据数据表生成实体类、dao接口、映射文件)
tkMapper整合
基于SpringBoot完成MyBtais的整合
添加依赖
<!-- https://mvnrepository.com/artifact/tk.mybatis/mapper-spring-boot-starter --> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> <version>2.1.5</version> </dependency>
修改启动类的@MapperScan注解的包
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import tk.mybatis.spring.annotation.MapperScan; @SpringBootApplication @MapperScan("com.hang.tkmapperboot.dao") public class TkmapperBootApplication { public static void main(String[] args) { SpringApplication.run(TkmapperBootApplication.class, args); } }
tkMapper使用
创建数据表
CREATE TABLE `users` ( `user_id` int(64) NOT NULL AUTO_INCREMENT COMMENT '主键id ⽤户id', `username` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '⽤户名 ⽤户名', `password` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '密码 密码', `nickname` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '昵称 昵称', `realname` varchar(128) CHARACTER SET utf8 COLLATE utf8_gen