MyBatis 是一款優秀的持久層框架,它支持定製化 SQL、存儲過程以及高級映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動設置參數以及獲取結果集。MyBatis 可以使用簡單的 XML 或註解來配置和映射原生信息,將接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java對象)映射成數據庫中的記錄。
在傳統的ssm框架中,使用mybatis需要大量的XML配置,而在springboot中,mybatis提供了一套自動化配置方案,可以做到mybatis開箱即用。
1.創建springboot項目
添加mybatis依賴、數據庫驅動以及數據庫連接池依賴,代碼如下:
<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>1.3.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.9</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>
2.創建數據庫、表、實體類
/*
Navicat MySQL Data Transfer
Source Server : localhost_3306
Source Server Version : 50625
Source Host : localhost:3306
Source Database : chapter05
Target Server Type : MYSQL
Target Server Version : 50625
File Encoding : 65001
Date: 2020-02-01 17:13:17
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for `user`
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(128) DEFAULT NULL,
`password` varchar(128) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', '123', '123');
INSERT INTO `user` VALUES ('2', '456', '456');
INSERT INTO `user` VALUES ('3', '789', '789');
INSERT INTO `user` VALUES ('4', 'liyu', 'test');
application.properties
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql:///chapter05
spring.datasource.username=root
spring.datasource.password=abcdABCD123
User.java
public class User {
private Integer id;
private String username;
private String password;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
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;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
3.創建數據庫訪問層
創建UserMapper,代碼如下:
@Mapper
public interface UserMapper {
int addUser(User user);
//int deleteUserById(Integer id);
//int updateUserById(User user);
//User getUserById(Integer id);
List<User> getAllUsers();
}
4.創建UserMapper.xml
和使用ssm框架相同,在與UserMapper相同的位置創建UserMapper.xml文件,代碼如下:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="org.sang.mapper.UserMapper">
<insert id="addUser" parameterType="org.sang.model.User">
INSERT INTO user(username,password) VALUES (#{username},#{password})
</insert>
<select id="getAllUsers" resultType="org.sang.model.User">
SELECT * FROM user
</select>
</mapper>
Ps:在idea中,配置mybatis的mapper.xml文件模板(現學現用)
菜單中選擇
File-> Edit->File and Code Templates
按提示配置一個就行
mapper.xml
模板:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="">
</mapper>
5.創建Service和Controller
創建UserService和UserController,代碼如下:
@Service
public class UserService {
@Autowired
UserMapper userMapper;
public int addUser(User user){
return userMapper.addUser(user);
}
public List<User> getALLUsers(){
return userMapper.getAllUsers();
}
}
@RestController
public class UserController {
@Autowired
UserService userService;
@GetMapping("/userOps")
public void userOps(){
//addUser
User user = new User();
user.setUsername("liyu");
user.setPassword("test");
int i = userService.addUser(user);
System.out.println("addUser>>>" + i);
//查詢全部用戶
List<User> userList = new ArrayList<>();
userList = userService.getALLUsers();
System.out.println("getALLUser"+userList);
}
}
6.配置pom.xml文件
在Maven工程中,XML配置文件建議寫在resource目錄下,但是上文的Mapper文件寫在包下,Maven在運行時會忽略包下的XML文件,因此需要在pom.xml文件中重新指明資源文件位置,配置如下:
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
接下來在瀏覽器中輸入: http://localhost:8080/userOps
控制檯:
數據庫:
確實很靈活啊
嘻嘻
再見
祝您平安
武漢加油!!!