配套教程源码,点击链接直接下载
通用mapper源码,点击下载
使用通用mapper的优点
通用mapper是mybatis的一个插件,传统的mybatis需要使用创建dao层,mapper.xml,和实体类,但是一旦使用了通用mapper之后,只要创建实体类就可以与数据库进行数据库查询数据.
第一步,引入依赖
版本控制
<mapper.version>4.0.0-beta3</mapper.version>
坐标
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>${mapper.version}</version>
</dependency>
第二步修改applicationcontext.xml
使用传统的mybatis的配置文件与通用mapper的通用文件知识一个包引入的差别,其他都是一样的.
第三步 dao层(也叫mapper层)接口继承mapper接口
只有dao层接口继承了通用mapper接口就可以实现通用mapper的方法,以后就再也不用管mapper.xml了,也不用写方法了,开发只要关心service和controller就Ok了.
第四步:给实体类加注释
注释解析:
@Table 注解
作用:建立实体类和数据库表之间的对应关系。
默认规则:实体类类名首字母小写作为表名。
用法:在@Table 注解的 name 属性中指定目标数据库表的表名
@Column 注解
作用:建立实体类字段和数据库表字段之间的对应关系。
默认规则:
实体类字段:驼峰式命名
数据库表字段:使用“_”区分各个单词
用法:在@Column 注解的 name 属性中指定目标字段的字段名
@Id 注解
通用 Mapper 在执行 xxxByPrimaryKey(key)方法时,有两种情况。
情况 1:没有使用@Id 注解明确指定主键字段
情况 2:使用@Id 主键明确标记和数据库表中主键字段对应的实体类字段。
4@GeneratedValue 注解
作用:让通用 Mapper 在执行 insert 操作之后将数据库自动生成的主键值回写到实体类对象中。
自增主键用法:
序列主键用法:
应用场景:购物车结账
- 增加商品销量… 减少商品库存… 生成订单数据→封装到 Order 对象中→保存 Order 对象→数据库自动生成主键
值→回写到实体类对象 Order 中 - 生成一系列订单详情数据→List→在每一个 OrderItem 中设置
Order 对象的主键值作为外键→批量保存 List ……
@Transient 主键
作用:用于标记不与数据库表字段对应的实体类字段。
@Transient
private String otherThings; //非数据库表中字段
有时候遇到了前端传递过来的传递过来的日期,不能直接接收,可以使用@JsonFormat注解转换成指定格式的日期
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private Date date;
不过这里要引入jackson的jar包才可以使用
版本控制
<jackson.version>2.5.0</jackson.version>
坐标
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson.version}</version>
</dependency>