SpringBoot整合Mybatis
-
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC
代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java
POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。(来源百度百科) -
我们为什么使用Mybatis,如果你不想天天写JDBC的连接查询方式,就用Mybatis,因为简单高效方便快捷!!!!配置超级简单!
正文
- 引入Mybatis,这个大家应该都会
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
- JDBC和MySQL
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
- 搭建数据库
以上所有事情的准备好了,多说一句就是在导入依赖包的时候我们一定要有相关的数据库配置才可以正常运行不然就会报错,数据库操作对我们程序员很重要
4. 然后就是程序目录
这里我们先来理清一下思路;
不要在意细节,这个字差不多了!!!
我们在
配置了这个文件
所有事情准备好了之后
那就开始吧
- 配置文件
server:
port: 8081
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/springblog?useUnicode=true & characterEncoding=utf-8 &
useSSL=true & serverTimezone=Asia/Shanghai
username: root
password: 196811
mybatis:
mapper-locations: classpath:/mapper/*.xml
type-aliases-package: com.nx.study.springstudy.bean
mapper-locations: classpath:/mapper/*.xml
type-aliases-package: com.nx.study.springstudy.bean
这个是一个扫描寻找的路径大家仔细看看包的位置
- 编写实体类
package com.nx.study.springstudy.bean;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
public class UserPostForm {
private int id;
@NotEmpty(message = "姓名不能为空!")
private String username;
@NotEmpty(message = "密码不能为空!")
@Size(min = 3, max = 10, message = "长度在3-10之间")
private String userpassword;
@NotEmpty(message = "不能为空")
@Email(message = "邮箱格式错误!")
private String useremail;
public String getUserEmail() {
return useremail;
}
public void setUserEmail(String userEmail) {
this.useremail = userEmail;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getUserpassword() {
return userpassword;
}
public void setUserpassword(String userpassword) {
this.userpassword = userpassword;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String toString() {
return "UserForm{" +
"username='" + username + '\'' +
", userpassword='" + userpassword + '\'' +
", useremail='" + useremail + '\'' +
'}';
}
}
3.编写dao层
package com.nx.study.springstudy.dao;
import com.nx.study.springstudy.bean.UserPostForm;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
@Repository
public interface UserDao {
public UserPostForm getUserPostFormByID(@Param("id") int id);
}
注意@Repository, @Param这两个注解的作用
4.函数主入口中扫描
package com.nx.study.springstudy;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@MapperScan("com.nx.study.springstudy.dao")
@SpringBootApplication
public class SpringStudyApplication {
public static void main(String[] args) {
SpringApplication.run(SpringStudyApplication.class, args);
}
}
5.编写Mapper(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="com.nx.study.springstudy.dao.UserDao">
<select id="getUserPostFormByID" resultType="UserPostForm">
select * from `user` where id=#{id}
</select>
</mapper>
注意:
namespace, id, resultType这几个一定要对应起来
- 编写Service
import com.nx.study.springstudy.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service("UserService")
public class UserService {
@Autowired
private UserDao userDao;
public UserPostForm queryUser(int id){
return userDao.getUserPostFormByID(id);
}
}
- 编写Controller
import com.nx.study.springstudy.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class Test {
@Autowired
private UserService userService;
@GetMapping("/getUser")
public UserPostForm getUser(@RequestParam("id") int id){
return userService.queryUser(id);
}
}
- 运行
localhost:8081/getUser?id=1
我们在回顾运行整个流程
其他查询方法大同小异,详情查看官网或者其他大佬!!!