用SpringBoot和Mybatis实现的简单的书籍CRUD的简单例子。
要件
MySQL的DB做成
环境搭建
参照 Vagrant-环境搭建
示例SQL准备
/* DB作成 */
CREATE DATABASE example_db DEFAULT CHARACTER SET utf8;
/* DB切换 */
use example_db;
/* テーブル作成 */
CREATE TABLE `books` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`isbn` varchar(255) DEFAULT NULL,
`title` varchar(255) DEFAULT NULL,
`price` int(11) DEFAULT NULL,
`created_at` datetime NOT NULL,
`updated_at` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/* データ作成 */
insert into books(isbn,title,price,created_at,updated_at)
values('978-4822280536', 'デッドライン', 2376, NOW(), NOW())
,('978-4873114798', 'プログラマが知るべき97のこと', 2052, NOW(), NOW())
,('978-4873115658', 'リーダブルコード', 2592, NOW(), NOW());
Spring Boot 工程建立
过程不详细记述,可参照
Gradle的SpringBoot工程
在此不使用 Swigger2,如果想使用的话,加入依赖即可,自行检索。
主要记录几个点
依赖注入
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:2.0.0'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'org.springframework.boot:spring-boot-devtools'
runtimeOnly 'mysql:mysql-connector-java'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
DB设定情报追加
spring.datasource.url=jdbc:mysql://192.168.XX.XX:3306/example_db?useSSL=false
spring.datasource.username=XX
spring.datasource.password=XX
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.tomcat.maxActive=30
spring.datasource.tomcat.maxIdle=20
spring.datasource.tomcat.minIdle=10
spring.datasource.tomcat.initialSize=5
Model定义的作成
src/main/java/com/example/bootbatis/model/Book.java
Dao的作成
src/main/java/com/example/bootbatis/dao/BookDao.java
Mapping文件作成
src/main/resources/dao/BookDao.xml
Mybatis配置文件作成
src/main/resources/mybatis-config.xml
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="lazyLoadingEnabled" value="true" />
<setting name="useColumnLabel" value="true" />
<setting name="mapUnderscoreToCamelCase" value="true" />
</settings>
</configuration>
MyBatis用Config类追加
src/main/java/com/example/bootbatis/config/SqlMappingConfig.java
Controller追加
src/main/java/com/example/bootbatis/controller/BookController.java
连接测试
# list取得
curl -v http://localhost:8080/api/books
# id检索
curl -v http://localhost:8080/api/book/1
# 条目追加
curl -v -XPOST --data "title=TEST&isbn=XXXXX&price=1234" http://localhost:8080/api/book/
# 条目更新
curl -v -XPUT --data "title=UPDATE&isbn=YYYY&price=5678" http://localhost:8080/api/book/4
# 条目删除
curl -v -XDELETE http://localhost:8080/api/book/4
增加动作确认的页面
src/main/java/com/example/bootbatis/config/StaticResourceConfig.java
src/main/resources/static/book.html
確認
http://localhost:8080/static/book.html
JAR包生成
PS C:\Work\springbootmybatis\bootbatis> ./gradlew assemble
在 \build\libs 下面生成 bootbatis-0.0.1-SNAPSHOT.jar