文章目錄
spingboot和mybatis整合
純註解方式,不使用xml
1. 創建數據庫
DROP DATABASE IF EXISTS `socks`;
CREATE DATABASE `socks`;
USE `SOCKS`;
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
`USER_ID` varchar(50) ,
`USERNAME` varchar(50) ,
`PASSWORD` varchar(50) ,
`PHONE_NUM` varchar(15)
) ;
INSERT INTO `t_user` VALUES ('1', 'admin', 'admin','15011791234');
INSERT INTO `t_user` VALUES ('2', 'roots', 'roots','18812342017');
2. 建立工程,spring initizer: web + jbdc + mysql + mybatis,pom.xml如下:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.mybatis</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<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.0.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
3. 針對表t_user創建一個類,針對一個表數據,也可以叫做結構體,數據類型,一般的實體(也就是數據類型)放在pojo下面:
4. 爲這個表創建方法,這個方法還必須和mysql map起來,也就是一個方法對應着對應的sql語句,對數據庫的操作都是放在mapper下面
這裏面的問題是,User的數據名和數據庫裏面的數據名不一致,數據庫裏面喜歡用下劃線,要麼開啓駝峯映射,要麼直接使用@Results一一對應這個是一勞永逸的方法。
@Mapper
public interface UserMapper {
@Select("select * from t_user")
@Results({
@Result(property = "userId", column = "USER_ID"),
@Result(property = "username", column = "USERNAME"),
@Result(property = "password", column = "PASSWORD"),
@Result(property = "mobileNum", column = "PHONE_NUM")
})
List<User> list();
}
5. 顯示出來,controller裏面調用對應的方法:
(先寫函數或者變量,在寫註解,註解是作用其上的)
@RestController
@RequestMapping("/user/*")
public class UserController {
@SuppressWarnings("all")
@Autowired
UserMapper userMapper;
@GetMapping("list")
public List<User> list() {
return userMapper.list();
}
}
6. 附錄
application.yml
spring:
datasource:
#連接MySQL
url: jdbc:mysql://localhost:3306/socks?useSSL=false&serverTimezone=GMT%2B8
username: root
password: 880808
driver-class-name: com.mysql.jdbc.Driver
mybatis:
configuration:
#配置項:開啓下劃線到駝峯的自動轉換. 作用:將數據庫字段根據駝峯規則自動注入到對象屬性。
map-underscore-to-camel-case: true
logging:
level:
#打印SQL信息
com.mybatis.demo.mapper: debug
pojo.User.java
public class User {
private String userId;
private String username;
private String password;
private String mobileNum;
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getMobileNum() {
return mobileNum;
}
public void setMobileNum(String mobileNum) {
this.mobileNum = mobileNum;
}
}
mapper.UserMapper.java
@Mapper
public interface UserMapper {
@Select("select * from t_user")
@Results({
@Result(property = "userId", column = "USER_ID"),
@Result(property = "username", column = "USERNAME"),
@Result(property = "password", column = "PASSWORD"),
@Result(property = "mobileNum", column = "PHONE_NUM")
})
List<User> list();
}
controller.UserController.java
@RestController
@RequestMapping("/user/*")
public class UserController {
@SuppressWarnings("all")
@Autowired
UserMapper userMapper;
@GetMapping("list")
public List<User> list() {
return userMapper.list();
}
}