我们使用 MyBatis 作为 ORM 框架,搭配 MyBatis-Plus 的增强功能,提高开发效率。
下面就来进行必要的一些配置。
目录的层级和命名在遵循最佳实践的基础上带有个人习惯带来的不同,这里可以灵活变通。
默认情况几乎不用配置其他内容,只需要加上 spring.datasource 的必要信息就好:
spring: datasource: url: jdbc:mysql://127.0.0.1:3306/wxbox?useUnicode=true&characterEncoding=UTF-8&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8 username: root password: driver-class-name: com.mysql.cj.jdbc.Driver
后续如果有其他需要定制化的配置我们再加。
以用户表为例,我们有如下表:
CREATE TABLE `wxbox`.`user` ( `id` int(0) NOT NULL AUTO_INCREMENT, `username` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `secret_key` char(32) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `expired_at` datetime(0) NULL DEFAULT NULL, `created_at` datetime(0) NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, UNIQUE INDEX `username`(`username`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
在项目中创建 model 目录,新建 User.java 文件:
package com.foxescap.wxbox.model; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import lombok.Data; import java.time.LocalDateTime; /** * @author imxfly */ @Data public class User { @TableId(type = IdType.AUTO) private Long id; private String username; private String secretKey; private LocalDateTime expiredAt; @TableField(fill = FieldFill.INSERT) private LocalDateTime createdAt; }
需要注意的是:
• 我们使用 Lombok 依赖提供的 @Data 注解帮我们自动生成实体类中所有字段的通用 Getter、Setter 以及类的 toString 和 Equals 和 HashCode 方法,推荐使用,有效地减少样板代码的便携式。
• 我们使用 MyBatis-Plus 依赖提供的 @TableId 注解指定当前数据表的自增字段,其中类型为 type = IdType.AUTO。
• 我们使用 MyBatis-Plus 依赖提供的 @TableField 注解来帮我们实现自动填充,根据填充规则 fill = FieldFill.INSERT 表示新增记录的时候自动将该字段填充进去(但是需要配置一下,否则依赖不知道要填充什么值)
在项目中创建 mapper 目录,新建 UserMapper.java 文件:
package com.foxescap.wxbox.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.foxescap.wxbox.model.User; /** * @author imxfly */ public interface UserMapper extends BaseMapper<User> {}
通过继承 MyBatis-Plus 为我们封装好的 BaseMapper 接口,即可使用。
现在我们需要告诉 MyBatis-Plus 项目的映射目录在哪,在项目中创建 config 目录,新建 MyBatisPlusConfig.java 文件:
package com.foxescap.wxbox.config; import org.mybatis.spring.annotation.MapperScan; import org.springframework.context.annotation.Configuration; /** * @author imxfly */ @Configuration @MapperScan("com.foxescap.wxbox.mapper") public class MyBatisPlusConfig {}
在 @MapperScan 注解中配置映射的包路径即可。
• mybatis-spring-boot-autoconfigure
• MyBatis-Plus Docs