首页 > 其他分享 >4. SpringBoot整合mybatis

4. SpringBoot整合mybatis

时间:2023-07-05 17:23:27浏览次数:33  
标签:jdbc String name public 整合 mybatis type id SpringBoot

1. 回顾 Spring 整合 Mybatis

Spring​ 整合 Mybatis​ 需要定义很多配置类

  • SpringConfig​ 配置类

    • 导入 JdbcConfig​ 配置类

    • 导入 MybatisConfig​ 配置类

      @Configuration
      @ComponentScan("com.itheima")
      @PropertySource("classpath:jdbc.properties")
      @Import({JdbcConfig.class,MyBatisConfig.class})
      public class SpringConfig {
      }
      
      
  • JdbcConfig​ 配置类

  • 定义数据源(加载 properties 配置项:driver、url、username、password)

    public class JdbcConfig {
        @Value("${jdbc.driver}")
        private String driver;
        @Value("${jdbc.url}")
        private String url;
        @Value("${jdbc.username}")
        private String userName;
        @Value("${jdbc.password}")
        private String password;
    
        @Bean
        public DataSource getDataSource(){
            DruidDataSource ds = new DruidDataSource();
            ds.setDriverClassName(driver);
            ds.setUrl(url);
            ds.setUsername(userName);
            ds.setPassword(password);
            return ds;
        }
    }
    
  • MybatisConfig​ 配置类

    • 定义 SqlSessionFactoryBean

    • 定义映射配置

      @Bean
      public MapperScannerConfigurer getMapperScannerConfigurer(){
          MapperScannerConfigurer msc = new MapperScannerConfigurer();
          msc.setBasePackage("com.itheima.dao");
          return msc;
      }
      
      @Bean
      public SqlSessionFactoryBean getSqlSessionFactoryBean(DataSource dataSource){
          SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
          ssfb.setTypeAliasesPackage("com.itheima.domain");
          ssfb.setDataSource(dataSource);
          return ssfb;
      }
      

2. SpringBoot 整合 mybatis

  1. 创建模块

    image

  1. 定义实体类

    public class Book {
        private Integer id;
        private String name;
        private String type;
        private String description;
    
        public Book() {
        }
    
        public Book(Integer id, String name, String type, String description) {
            this.id = id;
            this.name = name;
            this.type = type;
            this.description = description;
        }
    
        @Override
        public String toString() {
            return "Book{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    ", type='" + type + '\'' +
                    ", description='" + description + '\'' +
                    '}';
        }
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getType() {
            return type;
        }
    
        public void setType(String type) {
            this.type = type;
        }
    
        public String getDescription() {
            return description;
        }
    
        public void setDescription(String description) {
            this.description = description;
        }
    }
    
    

  1. 定义 Dao 接口

    public interface BookDao {
        @Select("select * from tbl_book where id = #{id}")
        public Book getById(Integer id);
    }
    
    

  1. 定义测试类

    @SpringBootTest
    class Springboot03MybatisTestApplicationTests {
    
    
        @Autowired
        private BookDao bookDao;
    
        @Test
        void contextLoads() {
        }
    
        @Test
        public void testMybatis() {
            Book book = bookDao.getById(1);
            System.out.println(book);
        }
    
    
    }
    

  1. 编写配置

    • application.yml​ 中指定数据库

      spring:
        datasource:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://localhost:3306/ssm?serverTimezone=UTC
          username: root
          password: 123456
      
  2. 测试

    运行测试方法,我们会看到如下错误信息

    image

    错误信息显示在 Spring​ 容器中没有 BookDao​ 类型的 bean​。为什么会出现这种情况呢?

    原因是 Mybatis​ 会扫描接口并创建接口的代码对象交给 Spring​ 管理,但是现在并没有告诉 Mybatis​ 哪个是 dao​ 接口。而我们要解决这个问题需要在BookDao​ 接口上使用 @Mapper​ ,BookDao​ 接口改进为

    image

注意:

SpringBoot​ 版本低于 2.4.3(不含),Mysql 驱动版本大于 8.0 时,需要在 url 连接串中配置时区 jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC​,或在 MySQL 数据库端配置时区解决此问题

  1. 使用 Druid 数据源

    • 导入 Druid​ 依赖

      <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>druid</artifactId>
          <version>1.1.16</version>
      </dependency>
      
    • application.yml​ 配置文件配置
      可以通过 spring.datasource.type​ 来配置使用什么数据源。配置文件内容可以改进为

      spring:
        datasource:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
          username: root
          password: root
          type: com.alibaba.druid.pool.DruidDataSource
      

标签:jdbc,String,name,public,整合,mybatis,type,id,SpringBoot
From: https://www.cnblogs.com/NorthPoet/p/17529092.html

相关文章

  • springboot 加载自定义的属性配置文件 或者xml文件
    1、properties user.propertiesname=zhangshanage=18  2、xml Pen1.xml<?xmlversion="1.0"encoding="utf-8"?><!DOCTYPEpropertiesSYSTEM"http://java.sun.com/dtd/properties.dtd"><properties><......
  • Mybatis-generator插件快速生成代码
    生成步骤:在pom.xml中添加插件<!--mybatisGenerator插件--><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-maven-plugin</artifactId><version>1.4.0</version><depende......
  • 3. SpringBoot整合junit
    1.回顾Spring整合junit‍@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(classes=SpringConfig.class)publicclassUserServiceTest{@AutowiredprivateBookServicebookService;@TestpublicvoidtestSave(){bookS......
  • kubesphere devops部署springboot项目
    一:使用流水线devops部署springboot项目的流程: 二、本次项目结构: 其中Dockerfile:FROMopenjdk:8-jdkLABELmaintainer=leifengyang#dockerrun-ePARAMS="--server.port9090"ENVPARAMS="--server.port=8080"RUN/bin/cp/usr/share/zoneinfo/Asia/Shanghai/et......
  • 金蝶Apusic 应用服务器9.0版本上,springboot项目关于文件上传的一个问题
    金蝶Apusic应用服务器9.0版本上,springboot项目关于文件上传的一个问题 项目部署在金蝶v9上使用文件上传时,请求接口获取不到参数。但是在本地启动应用是可以获取到参数,没有任何问题。 @RequestMapping("doUpload")publicvoiddoUpload(DocAttaPagepage,@RequestParam(val......
  • 红米Note 11 Pro 5g (veux)的刷机资源整合分享
    *刷机有风险,格机需谨慎*适用于:RedmiNote11Pro+5G(peux/veux)/POCOX4Pro5G(veux)RecTwrp(https://forum.xda-developers.com/t/shared-recovery-unofficial-twrp-3-7-0_12-for-veux-peux.4520689/)(触屏有机会失效,重启解决)RomCrDroid(https://forum.xda-dev......
  • Springboot No bean named 'XXXXX' available 问题解决
    一、问题描述近日在工作中遇见了一个bug,后端程序频频报错Nobeannamed'XXXXX'available。对比同类程序文件,没有发现有任何特殊之处。在网上搜索方法基本上就是扫描包配置、注解问题、路径问题等,皆不能解决我的问题。排查问题是发现出现问题的类命名不符合驼峰规范,按照这个......
  • mybatis单元测试(无需启动容器)
    一、浅析相关类参考文档:https://blog.csdn.net/weixin_44778952/article/details/1096611251ConfigurationMyBatis在启动时会取读取所有配置文件,然后加载到内存中,Configuration类就是承载整个配置的类。SqlSessionFactoryBuilder调用build方法创建SqlSessionFactory,而SqlSessio......
  • Mybatis-Plus中update()和updateById()将字段更新为null
    目录简介问题描述原因概述源码分析所有策略设置为null的方案方案1:使用UpdateWrapper更新方案2:设置全局的field-strategy(不推荐)方案3:设置某个字段的field-strategy参考文章简介说明本文介绍Mybatis-Plus无法将字段更新为null的原因及解决方法。问题描述用Mybatis-......
  • springboot Minio功能实现
    1.导入Minio相关依赖<dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.4.4</version><exclusions><exclusion><groupId>c......