Springboot整合mybatis

  本篇文章通过新创建一个Springboot项目来简单纪录一下如何整合mybatis,我这里使用的是VMware虚拟机和Xshell工具来模拟的开发环境,先启动VMware,然后使用Xshell工具到mysql的bin目录下使用 ./mysqld_safe & 命令来启动mysql服务。然后使用navicat工具(一款用于操作数据库的工具)连接一下linux中启动的数据库,确保数据库的连接正常。

创建Springboot项目
  1. 选择下图中红框内的几个依赖(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文件来写sql语句操作数据库的,公司生成mapper.xml文件使用的是自己封装的一个类似 mybatis-generator 逆向工程的工具类。生成的mapper.xml文件中封装了很多的增删改查方法,但是实际在项目中,其中很多的方法都没有用上,这样一来,mapper.xml文件就显得冗余了。

  后来在新的项目中,我们就不再使用mapper.xml文件来操作数据库了,而是引入了通用mapper,这样就不再需要mapper.xml文件编写sql语句操作数据库了。直接使用mapper点的方式,就可以使用通用mapper中封装的各种增删改查方法了。

  Springboot项目整合通用mapper

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值