前言:在上一篇快速生成SpringBoot项目的基础上,我们今天完成MyBatis的集成,并完成MySQL中的CURD。
MyBatis 是一个基于Java的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
1.数据库创建一个表:用于测试结果:
DROP DATABASE IF EXISTS `bigdata`;
CREATE DATABASE bigdata /*!40100 DEFAULT CHARACTER SET utf8 */;
USE bigdata;
create table user(
id int AUTO_INCREMENT primary key,
username varchar(20),
userage int ,
useraddress varchar(200)
);
insert into user value(0,"张三0",20,"江苏");
insert into user value(0,"张三1",25,"江苏");
insert into user value(0,"张三2",24,"江苏");
insert into user value(0,"张三3",22,"江苏");
insert into user value(0,"张三4",20,"江苏");
2.为了快速生成entity,Mapper和mapperxml文件,我们使用mybatis generators快速生成代码。
2.1我们现在pom.xml中完成相关引用
org.mybatis.generator
mybatis-generator-maven-plugin
1.3.2
src/main/resources/config/generatorConfig.xml
true
true
2.2在此src/main/resources/config/generatorConfig.xml路径下,完成相关配置(包括是否添加注释,实体文件位置等)特别关系的是example这个相关类(方法)时候要生成,此处设置的false,后面再研究。
3.完成项目框架(注意:这边所有添加包,一定要在启动类所在包的子目录下)也可以把上面数据库驱动的位置,实体类位置,等写在文件下,直接用xml文件读取。
4.选择generatorConfig.xml右键run->run Configuations->Maven Build 选择现在项目->在Goals中输入命令 mybatis-generator:generate->Apply->Run 刷新项目,看到相应的文件
5.到此我们持久层的文件基本生成,我们需要在application.properties中添加
mybatis.mapper-locations=classpath*:/mapper/*Mapper.xml
为了程序可以自动读到这个xml。(不然你在别的地方使用此Mapper时,会报bean找不到的错误)。
并配置数据库必要因素:
spring.datasource.url=jdbc:mysql://localhost:3306/bigdata
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=520123
6.编写Controller层,用来测试我们的整合是否完成。
@RestController
@RequestMapping("/User")
public class UserController {
@Autowired
private UserService userservice;
//展示所有的user
@RequestMapping("/showalluser")
public List showalluser() {
System.out.println("showalluser");
List list=userservice.FindAll();
return list;
}
}
@RestController标识返回的是一个json数据,不会调用视图解析器,@Controller则返回到页面
@RequestMapping 是地址映射,对应uri的内容
@Autowired是Spring的自动织入,直接调用服务层的相关业务。
7.编程服务层Service
编一个接口,后再写一个实现类,解耦。
这边直接上实现类
@Service
@Transactional
public class UserServiceImpl implements UserService{
@Autowired
private UserMapper usermapper;
@Transactional(propagation=Propagation.SUPPORTS,readOnly=true)
public List FindAll() {
return usermapper.selectAll();
}
}
@Service标识我是服务层
@Transactional标识开启事务
@Autowired自动织入,持久层的相关操作。
8.完成Dao层的相关操作,因为,查询所有用户是自动生成代码不没带的功能,我自己手动加入的
Mapper 接口层
添加: List
Mapper实现层xml中
实现:
9.直接启动,启动类。在浏览器输入对应的uri:如下表示基本整合完成,对应的 增删改查,都在Mapper中就不一一测试。
推荐使用上一篇的springboot整合的junit来测试。
总结:1.配置*Mapper.xml位置是关键,后面研究注解是可以感觉注解的好处。
2.mybatis generators自动生成代码的使用。
3.xx.properties文件的创建 File->new->File,可以新建各种文件。