Spring Boot 配置 MyBatis 是多么的愉快

Spring Boot 配置 MyBatis 是多么的愉快

今天在研究 Spring Boot 的时候发现 Spring Boot 真是让开发者懒到了极点。突然发现配置 MyBatis 也是一项很有乐趣的事情。

http://img.runbrick.com/blog/UvvkkE.jpg

当我得知这么简单的时候我差不点就直接嗝屁了。我的开发环境是下面列出来的内容

  • JDK 1.8
  • Maven
  • SpringBoot

在 Spring Boot 快速启动项配置中引入 MyBatis 的 Maven 库。因为我是 MySQL 8 所以我就没有写驱动的版本,你们要是其他的请执行驱动的版本号

<dependency>
  	<groupId>org.mybatis.spring.boot</groupId>
  	<artifactId>mybatis-spring-boot-starter</artifactId>
  	<version>2.1.3</version>
</dependency>

<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
</dependency>

创建数据库和数据库表来当测试用例

CREATE DATABASE springboottest;

CREATE TABLE `users` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  `craete_at` datetime DEFAULT NULL,
  `email` varchar(255) DEFAULT NULL,
  `sex` tinyint(1) unsigned DEFAULT '0' COMMENT '0 男 1 女',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

配置 application.properties 的 MyBatis 参数

... 忽略其他配置内容

# mybatis
mybatis.type-aliases-package=这里要写上实体类的包名例如 com.runbrick.entity

# dataSource
spring.datasource.url=jdbc:mysql://localhost:3306/blog?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=root-password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# Hikari+ 
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.hikari.maximum-pool-size=10
spring.datasource.hikari.minimum-idle=10

上面我没有添加 HikariCP 的包但是我却配置了 HikariCP 的内容,是因为在 Spring Boot 2.x 之后使用 HikariCP 作为默认的数据连接池。

配置 Entity 实体类

public class Users {
    private Long id;
    private String name;
    private String password;
    private Date createAt;
    private String email;
    private Integer sex;

    public Users(String name, String password, Date createAt, String email, Integer sex) {
        this.name = name;
        this.password = password;
        this.createAt = createAt;
        this.email = email;
        this.sex = sex;
    }
  // ... 省略下方 get set 等 方法
}

配置 Mapper


@Repository
public interface UsersMapper {

    @Select("Select * From users")
    @Result(property = "createAt", column = "create_at")
    List<Users> getAll();


    @Insert("Insert InTo users(name,password,create_at,email,sex) Values(#{name},#{password},#{createAt},#{email},#{sex})")
    @Options(useGeneratedKeys = true,keyProperty = "id",keyColumn = "id") // 此处是让 Insert 返回数据库自增的 ID
    Integer insert(Users users);

    @Update("Update users Set name=#{name} where id=#{id}")
    void updateName(@Param("name") String name, @Param("id") Long id);

}

在启动类添加注解 @MapperScan 省的每个 mapper 都要添加 @Mapper

@SpringBootApplication
@MapperScan("com.runbrick.mapper")
public class SpringBootTest {

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

}

添加测试类

@SpringBootTest
@Rollback(false)
public class UserMapperTest {


    @Autowired
    private UsersMapper usersMapper;

    @Test
    void testInsert() {
        for (int i = 0; i < 100; i++) {
            Users users = new Users("张安" + i, DigestUtils.md5DigestAsHex("123456".getBytes()), new Date(), i + "@qq.com", 1);
            usersMapper.insert(users);
            System.out.println(users.getId());
        }
    }
}

Spring Boot 真是一个撩人的小妖精。继续研究 Spring Boot 的其他好玩的东西去了。

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×