1.1 在项目开发过程中Dao层的实现的规律

  • 所有的实体类与数据表存在对应关系,并且是有规律的(只要知道了数据表的的结构,就能够生成实体类)

  • 所有实体的Dao接口中定义的方法也是有规律的,不同点就是实体类型不同

    • UserDao

      1
      2
      public interface UserDao extends GeneralDao<User>{
      }
    • GoodsDao

      1
      2
      public interface GoodsDao extends GeneralDao<Goods>{
      }
    • GeneralDao

      1
      2
      3
      4
      5
      6
      7
      public interface GeneralDao<T>{
      //通用方法

      public int insert(T t);

      public T queryOnePrimaryKey(int i);
      }
  • 对于GeneralDao接口定义的数据库操作方法因为使用了泛型,无需映射文件;对于UserDaoGoodsDao需要映射文件,所有Dao的相同操作的映射文件也是有规律可循的

    • UserMapper

      1
      2
      3
      <insert id="insert">
      insert into users(user_Id,user_name)values(#{userId},#{userName})
      </insert>
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      @Table("users")
      public class User{

      @Id
      @Column("user_id")
      private int userId;

      @Column("user_name")
      private String userName;
      }
      1
      2
      3
      4
      5
      6
      7
      String sql = "<insert id= 'insert'>insert into";

      sql2 = "(user_id,user_name
      sql3 = "values(#{userId},#{userName})"

      sql = sql + sql2 + sql3
      sql += "</insert>"
    • GoodsMapper

      1
      2
      3
      <insert id="insert">
      insert into goods(goods_id,goods_name)values(#{goodsId},#{goodsName})
      </insert>
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      @Table("goods")
      public class Goods{

      @Id
      @Column("goods_id")
      private int goodsId;

      @Column("goods_name")
      private String goodsName;
      }

1.2 tkMapper简介


基于Mybatis提供了很多第三方插件,这些插件通常可以完成通过数据操作方法的封装(GeneralDao)、数据库逆向工程的工作(根据数据表生成实体类、映射文件)。

  • Mybatis-Plus
  • tkMapper

tkMapper就是一个Mybatis插件,是在Mybatis基础上提供了很多工具,让开发变得简单,提高开发效率。

  • 提供了针对单表的通用的数据库操作方法
  • 逆向工程(根据数据库生成实体类、Dao接口、映射文件)

1.3 tkMapper整合


1.3.1 基于Spring Boot完成Mybatis的整合
1.3.2 整合tkMapper
1.3.3 添加tkMapper的依赖
1
2
3
4
5
6
<!-- tkMapper -->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
</dependency>

1.3.4 修改启动类的@MapperSace注解的包为import tk.mybatis.spring.annotation.MapperScan;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package com.yuhao.springboot.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import tk.mybatis.spring.annotation.MapperScan;

@SpringBootApplication
@MapperScan("com.yuhao.springboot.demo.dao")
public class SpringbootDemoApplication {

public static void main(String[] args) {
SpringApplication.run(SpringbootDemoApplication.class, args);
}

}

1.4 tkMapper的使用


1.4.1 创建数据表
1.4.2 创建实体类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class User {
private Integer id;
private String username;
private String password;
private String nickName;
private Integer age;
private String sex;
private String address;
private String avatar;
}
1.4.3 创建Dao接口

tkMapper已经完成了对单表的通用操作的封装;封装在MapperMysqlMapper中;因此如果我们想要完成对单表的操作,只需自定义Dao接口继承MapperMysqlMapper即可。

1
2
3
public interface UserDao extends Mapper<User>, MySqlMapper {

}
1.4.4 测试