版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaozhegaa/article/details/82912471
目录
SpringBoot整合Mybatis
一、Mybatis配置文件梳理~~分析以往的配置文件
二、SpringBoot整合Mybatis代码开发
三、进一步分析上面的配置
四、配置文件(*.xml没有在resource目录下,编译之后找不到的问题)
五、输出Mybatis sql语句
SpringBoot整合Mybatis
一、Mybatis配置文件梳理~~分析以往的配置文件
从以前的配置来看
开启注解扫描 – 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实体
@Setter@Getter@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();
}
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>
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成功。
说白了,啰嗦了那么多,就是在application.properties里面三个属性+@MapperScan() 注解。
上述的配置,需要拥有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
在build中使用下面的配置即可:
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
再次编译,就可以了