前面我们学习了原生MyBatis、MyBatis-Spring两种方式在你的项目中使用MyBatis的方式,可以发现原生MyBatis使用起来还是比较麻烦的,需要在代码中通过操作SqlSession、SqlSessionFactory两个类才能完成sql操作,在MyBatis-Spring中把SqlSession和SqlSessionFactory封装到了Bean中,通过xml或注解对Bean进行配置就可以使用,减少了应用代码中的实现代码。
对于我们习惯习惯使用Spring Boot自动配置的程序员来说,MyBatis-Spring使用起来还是不够方便,于是便产生了MyBatis-Spring-Boot-Starter,通过MyBatis-Spring-Boot-Starter我们可以使用Spring Boot的自动配置功能,使我们在使用时可以完全不必关心MyBatis的底层操作。
使用MyBatis-Spring-Boot-Starter的优势:
目前使用最多的也是MyBatis-Spring-Boot-Starter。
点击查看官方文档
另外使用方式参考:
点击下载github源代码
<dependency>
<groupId>org.mybatis.spring.bootgroupId>
<artifactId>mybatis-spring-boot-starterartifactId>
<version>2.1.1version>
dependency>
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1/learnDB?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=my2020
package com.reeson.learn.demo.controller;
import com.reeson.learn.demo.entity.User;
import com.reeson.learn.demo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class UserController {
@Autowired
private UserMapper userMapper;
@RequestMapping("/getUsers")
public List<User> getUsers() {
List<User> users=userMapper.getAll();
System.out.println(users);
return users;
}
@RequestMapping("/getUser")
public User getUser(int id) {
User user=userMapper.getOne(id);
return user;
}
@RequestMapping("/add")
public void save(User user) {
userMapper.insert(user);
}
@RequestMapping(value="update")
public void update(User user) {
userMapper.update(user);
}
@RequestMapping(value="/delete/{id}")
public void delete(@PathVariable("id") int id) {
userMapper.delete(id);
}
}
这里可以使用@Mapper注解,也可以在SpringBootApplication中使用@ScanMapper(包名),将Mapper注册到Spring中,否则Spring会报找不到Mapper的错误。
package com.reeson.learn.demo.mapper;
import com.reeson.learn.demo.entity.User;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Component;
import java.util.List;
@Mapper
public interface UserMapper {
@Select("SELECT * FROM users")
@Results({
@Result(property = "age", column = "age"),
@Result(property = "name", column = "name"),
@Result(property = "id", column = "id")
})
List<User> getAll();
@Select("SELECT * FROM users WHERE id = #{id}")
User getOne(int id);
@Insert("INSERT INTO users(id,name,age) VALUES(#{id}, #{name}, #{age})")
int insert(User user);
@Update("UPDATE users SET name=#{name},age=#{age} WHERE id =#{id}")
int update(User user);
@Delete("DELETE FROM users WHERE id =#{id}")
int delete(int id);
}
package com.reeson.learn.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication()
public class MybatisSpringBootStarterApplication {
public static void main(String[] args) {
SpringApplication.run(MybatisSpringBootStarterApplication.class, args);
}
}
启动Spring Boot Web服务,在浏览器中访问
http://localhost:8080/getUsers
即可查询到数据库中的用户数据,通过MyBatis-Spring-Boot-Starter实现了在我们的Spring项目中集成MyBatis的工作。