MyBatis Plus教程之@TableName注解

MyBatis Plus 将所有的注释都放到了 mybatis-plus-annotation 模块,如:mybatis-plus-annotation-3.4.0.jar 文件。

本文我们将介绍 @TableName 注解的用法,以及每个属性的实际意义和用法。

@TableName 注解用来将指定的数据库表和 JavaBean 进行映射。该注解属性如下:

value

字符串类型,不是必填,用来指定数据表名称。例如:

1

2

3

4

@TableName("user")

public class UserBean {

    // ...

}

上面实例中,将 user 数据表和 UserBean 实体进行映射。

schema

shcema 属性用来指定模式名称。如果你使用的是 mysql 数据库,则指定数据库名称。如果你使用的是 oracle,则为 schema,例如:schema="scott",其中:scott 就是 oracle 中的 schema。例如:

1

2

3

4

@TableName(value = "user", schema = "mybatis_test")

public class AnnotationUserBean {

    // 忽略其他代码

}

keepGlobalPrefix

是否保持使用全局的 tablePrefix 的值,如果设置了全局 tablePrefix 且自行设置了 value 的值。

resultMap

对应 Mapper XML 文件中 <resultMap> 标签的 id 属性的值。用法见 “autoResultMap” 属性

autoResultMap(默认为 false)

控制是否自动构建 resultMap 并使用它,如果你手动设置 resultMap 则不会进行自动构建并注入 resultMap。

例如:在 AnnotationUser3Mapper.java 所在的目录创建一个 AnnotationUser3Mapper.xml 文件,内容如下:

1

2

3

4

5

6

7

8

9

10

11

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.hxstrive.mybatis_plus.mapper.AnnotationUser3Mapper">

   <resultMap id="annotationUser3BeanMap" type="com.hxstrive.mybatis_plus.model.AnnotationUser3Bean">

      <id column="user_id" jdbcType="INTEGER" property="userId" />

      <result column="name" jdbcType="VARCHAR" property="name" />

      <result column="sex" jdbcType="VARCHAR" property="sex" />

      <result column="age" jdbcType="INTEGER" property="age" />

   </resultMap>

</mapper>

然后在 @TableName 注解中使用 resultMap 配置映射名称。例如,“resultMap = "annotationUser3BeanMap"

1

2

3

4

5

6

@TableName(value = "user", resultMap = "annotationUser3BeanMap")

public class AnnotationUser3Bean {

   @TableId(value = "user_id", type = IdType.AUTO)

   private String userId;

   // 忽略其他代码

}

关于 `autoResultMap` 的说明

MyBatis Plus 会自动构建一个 ResultMap 并注入到 mybatis 里(一般用不上)。下面讲两句:因为 MyBatis Plus 底层是 mybatis,所以一些 mybatis 的常识你要知道,MyBatis Plus 只是帮你注入了常用 crud 到 mybatis 里。注入之前可以说是动态的(根据你 entity 的字段以及注解变化而变化),但是注入之后是静态的(等于你写在 xml 的东西)而对于直接指定typeHandler,mybatis 只支持你写在2个地方:

  • 定义在 resultMap 里,只作用于 select 查询的返回结果封装

  • 定义在 insert 和 update sql 的 #{property} 里的 property 后面(例:#{property,typehandler=xxx.xxx.xxx}),只作用于设置值而除了这两种直接指定 typeHandler,mybatis 有一个全局的扫描你自己的 typeHandler 包的配置,这是根据你的 property的类型去找 typeHandler 并使用。

  • 1
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值