zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    跳转练习
    从入门到自闭之Python--Redis
    从入门到自闭之Python--Django Rest_Framework
    从入门到自闭之Python--RESTful API规范与序列化
    从入门到自闭之Python--虚拟环境如何安装
    从入门到自闭之Python集合,深浅拷贝(大坑)
    从入门到自闭之Python编码
    从入门到自闭之Python字典如何使用
    从入门到自闭之Python列表,元祖及range
    从入门到自闭之Python整型,字符串以及for循环
  • 原文地址:https://www.cnblogs.com/wgty/p/12810484.html
Copyright © 2011-2022 走看看