本篇文章通过新创建一个Springboot项目来简单纪录一下如何整合mybatis,我这里使用的是VMware虚拟机和Xshell工具来模拟的开发环境,先启动VMware,然后使用Xshell工具到mysql的bin目录下使用 ./mysqld_safe &
命令来启动mysql服务。然后使用navicat工具(一款用于操作数据库的工具)连接一下linux中启动的数据库,确保数据库的连接正常。
创建Springboot项目 |
- 选择下图中红框内的几个依赖(lombok不是必须的)
2.在项目的pom.xml
文件中添加Druid连接池的依赖
<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.21</version>
</dependency>
3.在项目的application.properties
配置文件中配置数据库信息
server.port=8082
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.url=jdbc:mysql://192.168.139.128:3306/order_mp_db?characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=123456
4.创建实体类
@Component
@Data
public class MpCoupon implements Serializable {
private static final long serialVersionUID = -7789032963657868210L;
private Integer id;
private String couponType;
private Integer couponNumber;
}
5.创建controller
@RestController
public class MpCouponController {
@Autowired
private MpCouponService mpCouponService;
@RequestMapping("/getList")
@ResponseBody
public Object getList() {
List<MpCoupon> mpCoupons = mpCouponService.queryList();
System.out.println(mpCoupons);
return "success";
}
}
6.创建service
public interface MpCouponService {
List<MpCoupon> queryList();
}
7.创建serviceImpl
@Service
public class MpCouponServiceImpl implements MpCouponService {
@Autowired
private MpCouponMapper mpCouponMapper;
@Override
public List<MpCoupon> queryList() {
return mpCouponMapper.selectList();
}
}
8.创建mapper
//@Mapper
public interface MpCouponMapper {
List<MpCoupon> selectList();
}
将此类标记为Mapper有两种方式:
一:直接在此类的类名上面添加@Mapper注解
此种方式比较直观,直接在Mapper类上添加注解表示这个类是一个Mapper,但是相比较第二种方式来说比较麻烦,因为这样一来,每个Mapper类中都需要添加此注解。
二:在启动类Application中添加@MapperScan注解
此注解就是指明项目的Mapper类所存放的路径,这样做就不需要在每个Mapper类中添加@Mapper注解了,此种方式相对来说比较方便。
9.创建Mapper.xml文件
此文件主要是编写操作数据库的sql语句,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.xml文件放置的位置常见的有两种:一种是直接和mapper.java文件放在同一个包下,另外一种是放置到resources目录中。如果是直接和mapper.java放在同一个包中,在项目启动编译的时候,mapper.xml将不会被识别编译,项目运行就会报错:
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.example.user.dao.UserDao.XXX(方法名)
发现这种错误:
1.首先检查在mapper.xml文件中的sql语句方法名和mapper.java文件中的方法名是否一致
2.如果你的mapper.xml文件和mapper.java文件放在同一个目录下,则可以看看项目的target
目录,看看mapper.xml文件是否被编译了。如果没有,则在pom.xml文件中添加下面代码,表示项目的mapper.xml文件到src/main/java
目录下面去找。
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
3.如果你的mapper.xml文件是放在resources目录中,那么检查该文件所在的包名路径是否和mapper.java的一致。
栗子
:我的mapper.java
文件的路径是org.woodside.mybatis.mapper
,那么在resources目录下,也需要创建org.woodside.mybatis.mapper
这么一个结构来存放mapper.xml文件,
总结:以上两种方式,个人建议将mapper.xml文件放在resources目录中,也就是使用第二种方式,这样不需要再进行额外的配置或者添加代码。
10.启动项目
访问getList
接口,我们返回了代码中的success
,另外看看idea中打印出来的查询数据库的信息(注:因为我这里的实体类随便写了数据库表中的几个字段,查询也是随便写的,主要是能看到sql语句能够正常操作数据库就行了)
至此,springboot项目整合mybatis就完成了,注意一下mapper那一块儿知识点就行了。
杂谈 |
后来在新的项目中,我们就不再使用mapper.xml文件来操作数据库了,而是引入了通用mapper,这样就不再需要mapper.xml文件编写sql语句操作数据库了。直接使用mapper点
的方式,就可以使用通用mapper中封装的各种增删改查方法了。