1. 背景
在Springboot 项目中集成 mybatis。
官方介绍:http://mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/
2.知识
2.1 新建项目
Step:1 使用 IDEA 编辑器,点击 Create New Project, 选择 Spring Initializr
- 备注: Spring Initializr 是Spring官方提供的一个用于快速创建 Spring 项目的辅助方法。
Step:2
Step:3
这里创建项目时应用了 4个类库:
- MyBatis Framework : 就是 MyBatis 库
- MySQL Driver:即 mySQL 的数据库驱动
- Spring Web : 构建 Web 应用,用于处理请求
- Lombok : 一个强大的辅助类库
2.2 配置 mybatis
Springboot 使用 application.propery 或者 application.yml 来配置应用。我这里用了 application.yml ,你可以创建一个。
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://localhost:3306/springboot_mybatis?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
mybatis:
mapper-locations: classpath:mapper/*Mapper.xml
type-aliases-package: com.example.entity
# 打印日志。比如你的包名在: cn.zyfvir.demo.mapper 下
logging:
level:
cn:
zyfvir:
demo : debug
- spring: datasource 这样的配置,是你的数据库数据源的配置,这里配置数据库连接字符串和用户名密码等。
- mapper-locations: classpath:mapper/*Mapper.xml 这句话很关键,它描述了 “如何查找myabatis 的 XML映射文件”,这句话的意思是在 resource下的 mapper 文件夹下查找 以 mapper.xml 结尾的文件。
2.3 编写代码
mybaits 支持两种方式映射:
- xml文件描述映射
- 注解映射
实际项目中可以混合使用,我这里都做了示例。
先看下我的代码结构:
image.png开始编写代码
写个实体类
public class City {
private Long id;
private String name;
private String state;
private String country;
}
mapper 映射类
@Mapper
public interface CityMapper {
@Select("SELECT * FROM city WHERE status = #{status}")
City findByStatus(@Param("status") int status);
List<City> findAll();
}
编写service类
public interface CityService {
City findByStatus(int status);
List<City> findAll();
}
/* 实现类 */
@Service
public class CityServiceImpl implements CityService {
@Autowired
CityMapper cityMapper;
@Override
public City findByStatus(int status) {
return cityMapper.findByStatus(status);
}
@Override
public List<City> findAll() {
return cityMapper.findAll();
}
}
控制器类
@RestController
@RequestMapping("/city")
public class CityController {
@Autowired
CityService cityService;
@RequestMapping("/findByStatus")
public City findByStatus(int status){
return cityService.findByStatus(status);
}
@RequestMapping("/findAll")
public List<City> findAll(){
return cityService.findAll();
}
}
2.4 演示访问地址
在浏览器打开这个地址:
http://localhost:8080/city/findAll
http://localhost:8080/city/findByStatus?status=1
3. 附录
我的建表语句:
CREATE TABLE city
(
id INT PRIMARY KEY auto_increment,
name VARCHAR(100) NULL,
status INT NOT NULL,
country VARCHAR(100) NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '城市';
INSERT INTO city (name,STATUS) VALUES ('北京',0);
INSERT INTO city (name,STATUS) VALUES ('上海',0);
INSERT INTO city (name,STATUS) VALUES ('河北',1);
我的代码示例:
https://github.com/vir56k/java_demo/tree/master/mybatisdemo8_springboot_mybatis
5.参考:
MyBatis Spring-Boot-Starter 将帮助你在 Spring Boot 中使用 MyBatis
https://github.com/mybatis/spring-boot-starter
http://mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/
https://github.com/mybatis/spring-boot-starter/wiki/Quick-Start
网友评论