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
控制台:
数据库:
确实很灵活啊
嘻嘻
再见
祝您平安
武汉加油!!!