天天看点

Mybatis——通用mapper(1)

 1、官网:

https://gitee.com/free

2、文档:

https://gitee.com/free/Mapper/wikis/Home

3、快速入门:

1、添加最新包:

<dependency>
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper</artifactId>
    <version>最新版本</version>
</dependency>
           

2、修改spring配置文件:

<!-- 整合通用Mapper 所需要做的配置修改: -->

<!-- 原始全类名:org.mybatis.spring.mapper.MapperScannerConfigurer -->

<!-- 通用Mapper 使用:tk.mybatis.spring.mapper.MapperScannerConfigurer -->

<bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer">

<property name="basePackage" value="com.atguigu.mapper.mappers"/>

</bean>

3、继承通用mapper:

Mybatis——通用mapper(1)

4、常用注解:

4.1    @Table

作用:建立实体类和数据库表之间的对应关系。

默认规则:实体类类名首字母小写作为表名。Employee 类→employee 表。

用法:在@Table 注解的name 属性中指定目标数据库表的表名

Mybatis——通用mapper(1)

4.2  @Column

作用:建立实体类字段和数据库表字段之间的对应关系。

默认规则:

       实体类字段:驼峰式命名

        数据库表字段:使用“_”区分各个单词

用法:在@Column 注解的name 属性中指定目标字段的字段名

Mybatis——通用mapper(1)

4.3 @Id (没有使用@Id标记时,在使用ID为条件,会将实体所有字段作为联合主键使用)

作用:使用@Id 主键明确标记和数据库表中主键字段对应的实体类字段。

Mybatis——通用mapper(1)

4.4  

@Transient

作用:使用 

@Transient

 注解来告诉通用 Mapper 这不是表中的字段。

4.5  @GeneratedValue(

@KeySql

 注解用于替换 

@GeneratedValue

作用:通过@GeneratedValue返回主键;

自增主键用法:

@KeySql(useGeneratedKeys = true)
private Long id;
           
@GeneratedValue(generator = "JDBC")
private Long id;
           

      或者

@KeySql(dialect = IdentityDialect.MYSQL)
private Integer id;
           
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
           

 Oracle 中通过序列获取主键:

@Id
@KeySql(sql = "select SEQ_ID.nextval from dual", order = ORDER.BEFORE)
private Integer id;
           

或:

@Id
@GeneratedValue(
  strategy = GenerationType.IDENTITY,
  generator = "select SEQ_ID.nextval from dual")
private Integer id;
           

5、方法介绍:

5.1 selectOne 方法

5.1.1:实体类封装查询条件生成WHERE 子句的规则:

         使用非空的值生成WHERE 子句

          在条件表达式中使用“=”进行比较

5.1.2: 要求必须返回一个实体类结果,如果有多个,则会抛出异常

5.2 xxxByPrimaryKey 方

需要使用@Id 主键明确标记和数据库表主键字段对应的实体类字段,否则通用Mapper 会将所有实体类字段作为联合主键。

5.3xxxSelective 方法

非主键字段如果为null 值,则不加入到SQL 语句中。

Mybatis——通用mapper(1)

5.4分页:

Mybatis——通用mapper(1)
Mybatis——通用mapper(1)

6、二级缓存:

注:开启二级缓存时,实体类必须序列化;

6.1

Mybatis——通用mapper(1)

6.2

Mybatis——通用mapper(1)

7、类型处理器:TypeHandler

简单类型:只有一个值的类型

复杂类型:有多个值的类型

项目源代码:https://github.com/ClevelandCavaliers2016/extendedUniversalMapper.git

注:通用Mapper 默认情况下会忽略复杂类型,不做表到实体的映射;

7.1、自定义类型转换器

方法一:

Mybatis——通用mapper(1)

1)自定义TypeHandler:

Mybatis——通用mapper(1)

2)指定TypeHandler:

Mybatis——通用mapper(1)

方法二:设置全局级别,在Mybatis 的配置文件中配置TypeHandler:

1)添加配置:

Mybatis——通用mapper(1)

2)添加 @Column

Mybatis——通用mapper(1)

7.2、枚举类型

方法一:让通用Mapper 把枚举类型作为简单类型处理

方法二::为枚举类型配置对应的类型处理器

1)添加配置:

Mybatis——通用mapper(1)

2)添加 @Column

Mybatis——通用mapper(1)

继续阅读