目录
SpringBoot整合Mybatis
一、Mybatis配置文件梳理~~分析以往的配置文件
二、SpringBoot整合Mybatis代码开发
三、进一步分析上面的配置
四、配置文件(*.xml没有在resource目录下,编译之后找不到的问题)
五、输出Mybatis sql语句
SpringBoot整合Mybatis
-
一、Mybatis配置文件梳理~~分析以往的配置文件
![SpringBoot入门学习(九)~~ 整合Mybatis SpringBoot入门学习(九)~~ 整合Mybatis](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzgyNS84MGYzNzgxNTBiMGJhYTIxYTNmZTY1NzEwZWNlOThlMS5wbmc=)
![SpringBoot入门学习(九)~~ 整合Mybatis SpringBoot入门学习(九)~~ 整合Mybatis](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzgwLzQ4YjNiNDk3MmY3MmFjNzgxMTJhNjg4ZmEzMDM3NWQ4LnBuZw==)
从以前的配置来看
- 开启注解扫描 – springBoot已完成
- 加载配置文件+数据源 –引入DruidData已完成
- 配置核心配置文件路径 ——待配置
- 别名扫描包 — —待配置
- 管理映射文件 — — 待配置
- 扫描mapper文件接口 —— 待配置
暂时不配置事务+aop相关。
也就是说我们需要配置上面的四项内容。
针对四项配置
-
二、SpringBoot整合Mybatis代码开发
1~8步骤都是常规的准备动作,
9~12才是我们真正的配置
- 引入Mybatis依赖
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency>
<!--druid demo-->
<dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.4</version> </dependency>
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency>
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.0</version> </dependency> </dependencies>
|
2、引入一个User实体
@[email protected]@ToString
public class User {
private Long id;
private String email;
private String fullname;
private Boolean isadmin;
private String password;
}
|
3、创建数据表结构
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`email` varchar(255) DEFAULT NULL,
`fullname` varchar(255) DEFAULT NULL,
`isadmin` tinyint(255) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
|
4、写UserMapper实体接口 + 映射文件
@Repository
public interface UserMapper {
int deleteByPrimaryKey(Long id);
int insert(User record);
int insertSelective(User record);
User selectByPrimaryKey(Long id);
int updateByPrimaryKeySelective(User record);
int updateByPrimaryKey(User record);
@Select("select * from user")
List<User> list();
}
|
![SpringBoot入门学习(九)~~ 整合Mybatis SpringBoot入门学习(九)~~ 整合Mybatis](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzIxOS8zMmZkMjM5ZDY1YmQyYjUxNWQ5YjdiMTIwYzFhZmUxMy5wbmc=)
5、引入mybatis的核心配置文件,放在resource文件夹里面
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="lazyLoadingEnabled" value="false"/>
<setting name="useGeneratedKeys" value="true"/>
<setting name="defaultStatementTimeout" value="2000" />
<setting name="logImpl" value="STDOUT_LOGGING" />
</settings>
</configuration>
|
![SpringBoot入门学习(九)~~ 整合Mybatis SpringBoot入门学习(九)~~ 整合Mybatis](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzIyL2UxOWUyMWRlNTg3MDdiNzQ3MTdhZjZkMGRlZDY1N2VlLnBuZw==)
6、编写service层 接口跟实现类
接口
public interface IUserService {
public List<User> list();
}
|
实现类:
@Service
public class UserServiceImpl implements IUserService {
@Autowired
private UserMapper userMapper;
@Override
public List<User> list() {
return userMapper.list();
}
}
|
7、编写controller层
@Controller
@RequestMapping("/user")
public class UserController {
@Autowired
private IUserService userService;
@RequestMapping("/list")
@ResponseBody
public List<User> list(){
return userService.list();
}
}
|
8、编写启动类
@SpringBootApplication
public class MybatisApplicatioin {
public static void main(String[] args) {
SpringApplication.run(MybatisApplicatioin.class,args);
}
}
|
9、配置Mybatis核心配置文件的路径
mybatis.config-location=classpath:mybatis-config.xml
9、配置别名扫描包的路径
mybatis.type-aliases-package=com.example.demo.mybatis.domain
10、管理映射文件位置
mybatis.mapper-locations=classpath:com/example/demo/mybatis/mapper/*Mapper.xml
11、扫描mapper文件接口:这是一个注解配置,在SpringBootApplication上
@SpringBootApplication
@MapperScan("com.example.demo.mybatis.mapper")
public class MybatisApplicatioin {
public static void main(String[] args) {
SpringApplication.run(MybatisApplicatioin.class,args);
}
}
|
12启动项目,尝试访问/user/list即可
![SpringBoot入门学习(九)~~ 整合Mybatis SpringBoot入门学习(九)~~ 整合Mybatis](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzgwNC9lN2I0OGZiNjkwNzk3ZWYzNzY2YWEwZTkyZWM2Mjc3Yy5wbmc=)
能够看到这个页面的,表示SpringBoot整合Mybatis成功。
说白了,啰嗦了那么多,就是在application.properties里面三个属性[email protected]()注解。
上述的配置,需要拥有Spring整合Mybatis基础。
1、如果mybatis的核心配置文件不需要特殊的配置,可以把
- 核心配置文件删除
-
mybatis.config-location=classpath:mybatis-config.xml去掉
- 启动项目
效果:照样可以访问
2、如果说,在xml中不需要别名,可以把
-
mybatis.type-aliases-package=com.example.demo.mybatis.domain
去掉
-
- 启动项目
效果:照样可以访问
3、如果说,在xml跟mapper文件放在同一个目录的情况下,可以把:
mybatis.mapper-locations=classpath:com/example/demo/mybatis/mapper/*Mapper.xml
去掉
启动项目
效果,照样可以访问。
也就是说,最简单最简单的整合MyBatis是直接加一个@MapperScan即可。
-
四、配置文件(*.xml没有在resource目录下,编译之后找不到的问题)
问题描述:有时候会很坑爹出现一种情况,就是在源文件中明明有某个xml文件,但是运行的时候报文件找不到。、
这是因为:默认情况下,resource以外的配置文件是不会加入编译的,你得手动指定加载resource之外的配置文件。
效果图:
logging.level.全路径mapper=debug
logging.level.com.example.demo.mybatis.mapper=debug
![SpringBoot入门学习(九)~~ 整合Mybatis SpringBoot入门学习(九)~~ 整合Mybatis](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzYvM2YyOTQ4NWQzZWUzNmU0YTBiMzBjMGViMjAxZmY1ZTYucG5n)
在build中使用下面的配置即可:
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
|
再次编译,就可以了
![SpringBoot入门学习(九)~~ 整合Mybatis SpringBoot入门学习(九)~~ 整合Mybatis](/default/index/img?u=aHR0cHM6Ly9waWFuc2hlbi5jb20vaW1hZ2VzLzE2NC8zYjA1ZGZlZGM3ZWIwMTk2ODhjYjI5M2RhZjk1Y2VhNC5wbmc=)