Skip to content

快速搭建SpringBoot+Mybatis应用

lxy edited this page Jul 6, 2021 · 1 revision

假设数据库有一张用户表

CREATE TABLE `user_info` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主键',
  `user_id` int(11) NOT NULL COMMENT 't_user外键',
  `city` varchar(50) DEFAULT NULL COMMENT '城市',
  `address` varchar(100) DEFAULT NULL COMMENT '街道',
  `status` varchar(4) DEFAULT '0' COMMENT '类型',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '添加时间',
  `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户信息表';

下面讲解如何使用代码生成器快速搭建SpringBoot + Mybatis应用

使用Idea创建SpringBoot应用

创建后的工程如下:

输入图片说明

pom.xml添加mybatis、mysql依赖:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <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>
        <version>8.0.20</version>
    </dependency>

application.properties添加配置:

server.port=7070

# 数据库配置
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/code_gen?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root

# 指定mybatis配置文件存放位置
mybatis.mapper-locations=classpath:mybatis/*.xml

新建一个entity包,用来存放实体类,新建一个mapper包,用来存放Mapper接口

在resources下新增一个mybatis文件夹,存放mybatis配置文件

此时项目结构如下:

输入图片说明

使用代码生成器生成代码:

选择数据源、勾选表、勾选模板文件,点击生成

代码生成

将生成的文件内容,分别放到对应的文件夹下,如图所示:

输入图片说明

编写测试用例

@SpringBootTest
class CodeGenApplicationTests {

    @Autowired
    UserInfoMapper userInfoMapper;

    @Test
    void insert() {
        UserInfo userInfo = new UserInfo();
        userInfo.setUserId(100);
        userInfo.setCity("杭州");
        userInfo.setAddress("西湖");
        userInfo.setStatus("ok");
        userInfo.setCreateTime(new Date());
        userInfo.setUpdateTime(new Date());
        int i = userInfoMapper.insert(userInfo);
        Assert.isTrue(i == 1, "insert fail");
        Assert.isTrue(userInfo.getId() > 0, "insert fail, not set id");
    }

    @Test
    void listAll() {
        List<UserInfo> userInfos = userInfoMapper.listAll();
        Assert.isTrue(userInfos.size() > 0, "insert fail");
    }

    @Test
    void update() {
        List<UserInfo> userInfos = userInfoMapper.listAll();
        Assert.isTrue(userInfos.size() > 0, "insert fail");
        UserInfo userInfo = userInfos.get(0);
        userInfo.setStatus("err");
        int i = userInfoMapper.update(userInfo);
        Assert.isTrue(i == 1, "insert fail");
    }

}

输入图片说明

Clone this wiki locally