1.引入依赖
在pom.xml中引入以下依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.20</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
这一步可能出现的问题:
- mysql驱动与mysql数据库的版本不匹配,导致连不上数据库
- druid连接池的版本与项目不匹配,换几个版本试试
- SpringBoot的版本要使用2.0.0以后的版本,使用3.0.0以后的版本及其容易报错
2.配置application.properties
在application.properties中加入以下配置,如果工程中位于resources文件中的的application配置文件是yml后缀,改成properties即可。
#设置连接池
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://localhost:3306/exercitationdb?useSSL=false
spring.datasource.username=root
spring.datasource.password=20040619Lmy
#数据库驱动器
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#设置mapper.xml的位置,classpath表示在resources下
mybatis.mapper-locations=classpath:mapper/*.xml
#设置驼峰命名与下划线命名转换
mybatis.configuration.map-underscore-to-camel-case=true
url,username,password根据自己用的数据库的名字,用户名,密码替换,例如我这里用的就是我一个叫exercitationdb的数据库。
3.创建mapper接口与实体类
目录结构如图所示:
UserMapper接口:
@Mapper
public interface UserMapper {
public List<User> selectAll();
}
User类写你与数据库表相关的实体类,要把每个属性的get和set方法写出来。
注意User类的成员变量的顺序,构造函数中变量的顺序尽量与数据库中表的属性的顺序一致,我之前就遇到过顺序不一致导致匹配出错的问题。
4.扫描含有mapper接口的包
在Application程序中加入MapperScan注解,里面写你mapper接口所在的包。
@MapperScan("com.example.day3.mapper")
@SpringBootApplication
public class Day3Application {
public static void main(String[] args) {
SpringApplication.run(Day3Application.class, args);
}
}
注意,这里的@MapperScan与mapper类上的@Mapper理论上只写一个就可以,以防万一可以两个都写。
5.编写mapper.xml
在src/main/resources下创建mapper目录,在里面创建UserMapper.xml,复制以下mapper.xml的基本格式进去。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="包名.类名">
</mapper>
如果不想每次创建mapper.xml时都要复制一遍这个格式,可以参考文章:
https://blog.csdn.net/xiaocui1995/article/details/123970574
在namespace内填上这个mapper.xml文件要配置的mapper类的包名和类名。
随后在内部写sql语句就可以了。例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.example.day3.mapper.UserMapper">
<select id="selectAll" resultType="com.example.day3.pojo.User">
select * from user;
</select>
</mapper>
匹配UserMapper类,使用select标签表示编写select语句,用id内填入匹配的方法名,去看上面的UserMapper接口内的方法名和这里一样,内部编写sql语句。
6.调用mapper接口
至此,就成功的完成了SpringBoot整合Mybatis,可以使用Autowired将bean注入到userMapper中调用他的selectAll()方法来查出数据库中所有的user信息,代码如下:
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public List<User> findAllUser() {
List<User> users = userMapper.selectAll();
return users;
}
}