Spring Boot整合Mybatis(注解方式)

MyBatis是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。

一、配置Mybatis相关依赖

1
2
3
4
5
6
7
8
9
10
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.1</version>
</dependency>

二、数据库配置文件

1
2
3
4
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=shenziyao
spring.datasource.password=960206ash
spring.datasource.url=jdbc:mysql://localhost:3306/jpa?serverTimezone=GMT%2B8

三、设置对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//lombok注解
@Data
//标明是一个实体类
@Entity
//设置映射到数据库的表名
@Table(name = "t_user")
public class User {
//设置主键
@Id
//设置主键增长策略
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
//设置映射表中的字段名称
@Column(name = "username")
private String name;
private String password;
private String email;
private Date birthday;
}

四、设置映射接口

1
2
3
4
5
6
7
8
9
10
//表示可以被装配
@Component
public interface UserMapper {
//#{}表示占位符,用@Param传递参数
@Select("select * from t_user where username=#{username}")
User findUserByName(@Param("username") String username);

@Insert("insert into t_user(username,password) values(#{username},#{password}) ")
void addUser(@Param("username") String username, @Param("password") String password);
}

五、创建接口服务并实现

1
2
3
4
5
6
public interface UserFindAndSaveService {
User findUser(String name);

void saveUser(User user);

}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//相当于对该类做了一个实例化
@Service
public class UserFindAndSaveServiceImpl implements UserFindAndSaveService {
//注入映射文件
@Autowired
private UserMapper userMapper;

@Override
public User findUser(String name) {
return userMapper.findUserByName(name);
}

@Override
public void saveUser(User user) {
userMapper.addUser(user.getName(), user.getPassword());
}
}

六、控制器测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//标明这是一个控制类
@Controller
public class UserFindAndSaveController {
//自动注入服务接口
@Autowired
private UserFindAndSaveService userFindAndSaveService;

@RequestMapping("/findUser")
@ResponseBody
public User findUser(String username) {
System.out.println("find");
return userFindAndSaveService.findUser(username);
}

@RequestMapping("/addUser")
@ResponseBody
public String addUser() {
User user = new User();
user.setName("pipi");
user.setPassword("TY1996");
userFindAndSaveService.saveUser(user);
return "success";
}
}

七、启动类添加注解

1
2
//指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类
@MapperScan("com.szy.mapper")

八、测试结果

  • 浏览器地址栏中访问http://localhost:8080/addUser

添加记录到表中。

  • 浏览器地址栏中访问http://localhost:8080findUser?username=pipi

查询结果以json格式返回到浏览器中。