当前位置:

首页 > 编程开发 > SpringBoot Mybatis怎么配置文件

SpringBoot Mybatis怎么配置文件

开发环境:IDEA2022.1.4+Mybatis1.概述在之前BiliBili学习SprintBoot时候,按照视频敲代码,SpringBoot集成MyBatis,是单独写了一个mybatis-config.xml文件。配置数据连接以及mapper等信息。后来问了下从事Java得同事,告知mybatis-config.xml文件其实可以写到application.yml。当时也没弄清楚。后来摸索中,也就渐渐明白了。2.单独配置mybatis-config.xml2.1配置内容当时视频学习,也写下学习得总

本文目录

      开发环境: IDEA 2022.1.4+ Mybatis

      1. 概述

              在之前BiliBili学习SprintBoot时候,按照视频敲代码,SpringBoot集成MyBatis,是单独写了一个mybatis-config.xml文件。配置数据连接以及mapper等信息。后来问了下从事Java得同事,告知mybatis-config.xml文件其实可以写到application.yml。当时也没弄清楚。后来摸索中,也就渐渐明白了。

      2. 单独配置mybatis-config.xml

      2.1 配置内容

              当时视频学习,也写下学习得总结。

      
      
      
      
      
          
          
       
          
          
              
          
       
          
          
              
          
       
          
          
          
          
          
          
              
                  
                  
                      
                      
                      
                      
                  
              
          
          
          
          
          
          
          
              
          
      

              jdbc.properties内容如下:

              单独写jdbc得配置,是担心以后要是部署成WAR形式,修改mybatis-config.xml内容得话,内容太多,防止修改错,就单独搞个jdbc配置。(其实我想多了)

      driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
      url=jdbc:sqlserver://127.0.0.1:1433;databaseName=EFMIS
      username=sa
      password=123qwe,.

      2.2 辅助类

              辅助类得作用在于初始调用类得时候,实现配置加载,并创建SqlSessionFactory,方便后面进行SQL查询。

      public class MybatisUtils {
          //SqlSessionFactory 静态单例模式
          private static SqlSessionFactory sqlSessionFactory;
       
          //使用Mybatis第一步 获取SqlSessionFactory对象
          static {
              try{
                  String resource="mybatis-config.xml";
                  InputStream inputStream= Resources.getResourceAsStream(resource);
                  sqlSessionFactory= new SqlSessionFactoryBuilder().build(inputStream);
              } catch (Exception e){
                  e.printStackTrace();
              }
          }
       
          //获取SqlSession实例
          //该实例包含了面向数据库执行sql命令所需要的所有方法
          public static SqlSession getSqlSession(){
              return sqlSessionFactory.openSession();
          }
      }

      2.3 调用操作

              此处我以登录操作为例。这样就可以连接数据库进行操作。

      @PostMapping("/user/login")
          public Result login(@RequestBody User user){
              SqlSession sqlSession= null;
              Map map= new HashMap<>();
              try{
                  sqlSession= MybatisUtils.getSqlSession();
                  UserMapper mapper= sqlSession.getMapper(UserMapper.class);
                  user= mapper.login(user);
                  if (user!= null){
                      //生成token
                      Map tokenmap= new HashMap<>();
                      tokenmap.put("loginname", user.getLoginname());
                      tokenmap.put("password", user.getPassword());
                      String token= JwtUtils.getToken(tokenmap);
                      //返回数据
                      map.put("user", user);
                      map.put("token", token);
                      return Result.ok(map);
                  } else {
                      return Result.error(CommonConstant.SYS_ERR_CODE, "用户不存在!");
                  }
              } catch (Exception e){
                  e.printStackTrace();
                  return Result.error("异常!"+ e.getMessage());
              } finally {
                  if (sqlSession!= null){
                      sqlSession.close();
                  }
              }
          }

      3. application.yml配置mybatis

      3.1 配置内容

              多余得内容不用管它。主要是配置数据源spring.datasource。配置数据库连接信息。

       Server:
        port: 8090
       
      spring:
        # quartz定时任务配置
        quartz:
          # 数据库存储方式
          job-store-type: jdbc
          org:
            quartz:
              jobStore:
                class: org.springframework.scheduling.quartz.LocalDataSourceJobStore
        #配置数据源
        datasource:
          url: jdbc:sqlserver://127.0.0.1:1433;SelectMethod=cursor;databaseName=EFMIS
          username: sa
          password: 123qwe,.
          driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver
        #json
        jackson:
          date-format: yyyy-MM-dd HH:mm:ss
          time-zone: GMT+8
        #热部署
        devtools:
          restart:
            enabled: true
            additional-paths: src/main/java
            exclude: static/**
        jta:
          atomikos:
            properties:
              recovery:
                forget-orphaned-log-entries-delay:
      mybatis:
        configuration:
          #开启驼峰映射
          map-underscore-to-camel-case: true
          #开启缓存
          cache-enabled: true
        #加载mapper.xml文件
        mapper-locations: classpath:com/ceaning/crudp/mapper/*.xml
        #别名扫描
        type-aliases-package: com.ceaning.crudp.entity
      logging:
        config: classpath:logback-spring.xml

      3.2 辅助类

      @Component
      public class SpringUtils implements BeanFactoryPostProcessor {
          /**
           * Spring应用上下文环境
           */
          private static ConfigurableListableBeanFactory beanFactory;
       
       
          @Override
          public void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException {
              SpringUtils.beanFactory= configurableListableBeanFactory;
          }
       
          public static  T getBean(String name) throws BeansException{
              name= lowerCaseInit(name);
              if(containsBean(name)){
                  return (T) beanFactory.getBean(name);
              } else{
                  return null;
              }
          }
       
          /**
           * 获取
           * @param cls
           * @return
           * @param 
           * @throws BeansException
           */
          public static  T getBean(Class cls) throws BeansException{
              T result= (T) beanFactory.getBean(cls);
              return result;
          }
       
          /**
           * 判断 BeanFactory是否包含bean对象
           * @param name
           * @return
           */
          public static boolean containsBean(String name){
              return beanFactory.containsBean(name);
          }
       
          /**
           * 判断以给定名字注册的bean定义是一个singleton还是一个prototype。
           * 如果与给定名字相应的bean定义没有被找到,将会抛出一个异常(NoSuchBeanDefinitionException)
           * @param name
           * @return
           * @throws NoSuchBeanDefinitionException
           */
          public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException{
              return beanFactory.isSingleton(name);
          }
       
          public static Class getType(String name) throws NoSuchBeanDefinitionException{
              return beanFactory.getType(name);
          }
       
          public static String[] getAliases(String name) throws NoSuchBeanDefinitionException{
              return beanFactory.getAliases(name);
          }
       
          /**
           * 首字母小写
           * @param name
           * @return
           */
          private static String lowerCaseInit(String name){
              if(name.length()>0){
                  char c= name.charAt(0);
                  if(c>=65 && c<=90){
                      int i= c+ 32;
                      return ((char)i)+ name.substring(1);
                  } else{
                      return name;
                  }
              } else{
                  return null;
              }
          }
      }

      3.3 调用操作

              此处还是以登录操作为例。同样可以进行数据库连接操作。

      @PostMapping("/user/login")
          public Result login(@RequestBody User user){
              Map map= new HashMap<>();
              try{
                  UserMapper mapper= SpringUtils.getBean(UserMapper.class);
                  user= mapper.login(user);
                  if (user!= null){
                      //生成token
                      Map tokenmap= new HashMap<>();
                      tokenmap.put("loginname", user.getLoginname());
                      tokenmap.put("password", user.getPassword());
                      String token= JwtUtils.getToken(tokenmap);
                      //返回数据
                      map.put("user", user);
                      map.put("token", token);
                      return Result.ok(map);
                  } else {
                      return Result.error(CommonConstant.SYS_ERR_CODE, "用户不存在!");
                  }
              } catch (Exception e){
                  e.printStackTrace();
                  return Result.error("异常!"+ e.getMessage());
              } 
          }
      本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
      作者最新文章
      编程开发
      相关文章 更多
      MyBatis XML开发全面完整指南
      MyBatis XML开发全面完整指南

      MyBatisXML开发方式适合复杂SQL逻辑,通过配置数据库连接与mapper路径,在接口和XML映射文件中实现增删改查操作。XML支持多表查询及结果映射,#{}使用预编译防注入,${}直接拼接需注意字符串引号。

      MyBatis Mapper 接口原理与实现解析
      MyBatis Mapper 接口原理与实现解析

      MyBatis通过动态代理自动生成Mapper接口实现类,运行时将接口方法绑定到SQL语句,结合XML映射文件中的SQL与参数配置,由SqlSession执行并返回结果,避免了手动编写实现类的繁琐过程。

      MyBatis框架常见问题及解决方案
      MyBatis框架常见问题及解决方案

      MyBatis常见问题包含:1.实体类属性与数据库字段不一致,解决方案为使用@Column注解映射;2.执行更新操作失败,需要配置update元素并检查SQL语句;3.查询结果映射出错,需检查resultMap配置是否正确;4.解析SQL参数失败,要使用#{}占位符并确保参数类型匹配。

      MyBatis框架中设计模式的应用
      MyBatis框架中设计模式的应用

      MyBatis框架广泛应用设计模式,包括:工厂模式:创建SqlSessionFactory对象,管理数据库连接和查询;代理模式:实现延迟加载和懒加载,提高性能。外观模式:封装对数据库访问,简化代码维护。其中,一对多关系映射可以通过User和Order类、Mapper接口和MapperXML配置实现,使用延迟加载和嵌套resultMap优化性能。

      MyBatis 的动态 SQL 解析:原理、实现和优化
      MyBatis 的动态 SQL 解析:原理、实现和优化

      MyBatis动态SQL解析:原理:使用TAG和OGNL表达式动态构建SQL语句。实现:通过SqlNode、SqlSource和ParameterHandler接口实现。优化:避免不必要的动态SQL、优化OGNL表达式、使用PreparedStatement缓存和配置查询超时。

      springBoot项目常用目录有哪些
      springBoot项目常用目录有哪些

      springBoot项目常用目录springBoot项目的目录结构及名规范介绍基于SpringBoot开发时的目录结构及命名规范,通过介绍能够为你解决,在实际项目中如何规划目录结构?如何命名目录更规范?各个目录分别代表什么含义?等三个问题。目录说明servicex//项目名|-admin-ui//管理服务前端代码(一般将UI和SERVICE放到一个工程中,便于管理)|-servicex-auth//模块1|-servicex-common//模块2|-servicex-gateway//模块3|-serv

      正确使用MyBatis中的小于符号
      正确使用MyBatis中的小于符号

      MyBatis是一个用Java语言编写的持久层框架,广泛用于数据库操作。在MyBatis中,使用小于号(<)进行条件查询是很常见的操作。但是,小于号在MyBatis中有一些使用注意事项,本文将介绍MyBatis小于号的正确使用方法,并提供具体的代码示例。1.在MyBatis中使用小于号的基本方法在MyBatis中使用小于号进行条件查询,一般是在SQL

      解析MyBatis的缓存机制:比较一级缓存和二级缓存的使用场景
      解析MyBatis的缓存机制:比较一级缓存和二级缓存的使用场景

      MyBatis的缓存机制解析:一级缓存与二级缓存的区别与应用在MyBatis框架中,缓存是一个非常重要的特性,可以有效提升数据库操作的性能。其中,一级缓存和二级缓存是MyBatis中常用的两种缓存机制。本文将详细解析一级缓存与二级缓存的区别与应用,并提供具体的代码示例进行说明。一、一级缓存一级缓存也被称为本地缓存,它默认开启且不可关闭。一级缓存是SqlSes

      深入了解MyBatis缓存机制:揭秘缓存存储原理
      深入了解MyBatis缓存机制:揭秘缓存存储原理

      MyBatis缓存机制详解:一文读懂缓存存储原理引言在使用MyBatis进行数据库访问时,缓存是一个非常重要的机制,能够有效减少对数据库的访问,提高系统性能。本文将详细介绍MyBatis的缓存机制,包括缓存的分类、存储原理和具体的代码示例。一、缓存的分类MyBatis的缓存主要分为一级缓存和二级缓存两种。一级缓存一级缓存是SqlSession级别的缓存,当在

      详解在MyBatis中使用小于符号的方法
      详解在MyBatis中使用小于符号的方法

      MyBatis中小于号的写法详解MyBatis是一个优秀的持久层框架,广泛应用于Java开发中。在使用MyBatis进行数据库操作的过程中,我们经常会用到小于号(<)进行条件查询。但是,MyBatis中小于号的写法并不像普通的SQL语句那样直接使用小于号符号,而是需要使用特定的方式来实现。本文将详细解释MyBatis中小于号的写法,并提供具体的代码示例

      查看更多
      精品专题 更多
      装机必备
      装机必备

      正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

      Windows
      Windows

      正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

      PDF教程
      PDF教程

      正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

      Mac软件 更多
      讯飞智作 网页版
      讯飞智作 网页版
      Windows/ macOS/ Linux

      讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

      火山引擎 网页版
      火山引擎 网页版
      Windows/ macOS/ Linux

      火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

      Aperty macOS版
      Aperty macOS版
      macOS

      Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

      WINDOWS 更多
      讯飞智作 网页版
      讯飞智作 网页版
      Windows/ macOS/ Linux

      讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

      火山引擎 网页版
      火山引擎 网页版
      Windows/ macOS/ Linux

      火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

      PixTV 网页版
      PixTV 网页版
      Windows

      PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。