文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

SpringBoot Mybatis怎么配置文件

2023-07-05 15:27

关注

这篇文章主要介绍“SpringBoot Mybatis怎么配置文件”,在日常操作中,相信很多人在SpringBoot Mybatis怎么配置文件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”SpringBoot Mybatis怎么配置文件”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

开发环境: 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 配置内容

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

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"        "http://mybatis.org/dtd/mybatis-3-config.dtd"><!--configuration核心配置文件--><!--顺序 properties->settings->typeAliases->typeHandlers->objectFactory->objectWrapperFactory->reflectorFactory->plugins->environments->databaseIdProvider->mappers--><configuration>    <!--jdbc.properties配置文件-->    <properties resource="jdbc.properties"></properties>     <!--设置mybatis输出日志 Mybatis默认就是STDOUT_LOGGING-->    <settings>        <setting name="logImpl" value="STDOUT_LOGGING"/>    </settings>     <!--  类型别名 默认为类名 指定这个后 mapper的xml文件指定返回值时候 可直接写类名(不区分大小写) 建议直接拷贝类名  -->    <typeAliases>        <package name="com.ceaning.crudp.entity"/>    </typeAliases>     <!-- 环境配置 -->    <!-- development IDEA默认 开发环境 -->    <!-- 可以自定义 比如定义test formal 看心情 每个SqlSessionFactory实例只能选择一种环境 这个可随时配置 -->    <!-- test 测试环境 -->    <!-- formal 正式环境 -->    <environments default="development">        <environment id="development">            <transactionManager type="JDBC"/>            <dataSource type="POOLED">                <property name="driver" value="${driver}"/>                <property name="url" value="${url}"/>                <property name="username" value="${username}"/>                <property name="password" value="${password}"/>            </dataSource>        </environment>    </environments>    <!-- 映射器 每一个mapper.xml都需要在Mybatis的核心文件中注册! -->    <!-- 注册方式1 使用xml文件 <mapper resource="com/ceaning/efmis/mapper/UserMapper.xml"/> -->    <!-- 注册方式2 使用class文件 <mapper class="com.ceaning.efmis.mapper.UserMapper"/> -->    <!-- 注册方式3 mapper代理方式 <package name="com.ceaning.efmis.mapper"/> -->    <!--        注册方式2(使用class文件)和注册方式3(使用包扫描注册)        1.接口和他的Mapper配置文件必须同名        2.接口和他的Mapper配置文件必须在同一个包下    -->    <mappers>        <package name="com.ceaning.crudp.mapper"/>    </mappers></configuration>

        jdbc.properties内容如下:

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

driver=com.microsoft.sqlserver.jdbc.SQLServerDriverurl=jdbc:sqlserver://127.0.0.1:1433;databaseName=EFMISusername=sapassword=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<String, Object> map= new HashMap<>();        try{            sqlSession= MybatisUtils.getSqlSession();            UserMapper mapper= sqlSession.getMapper(UserMapper.class);            user= mapper.login(user);            if (user!= null){                //生成token                Map<String, String> 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    private static ConfigurableListableBeanFactory beanFactory;      @Override    public void postProcessBeanFactory(ConfigurableListableBeanFactory configurableListableBeanFactory) throws BeansException {        SpringUtils.beanFactory= configurableListableBeanFactory;    }     public static <T> T getBean(String name) throws BeansException{        name= lowerCaseInit(name);        if(containsBean(name)){            return (T) beanFactory.getBean(name);        } else{            return null;        }    }         public static <T> T getBean(Class<T> cls) throws BeansException{        T result= (T) beanFactory.getBean(cls);        return result;    }         public static boolean containsBean(String name){        return beanFactory.containsBean(name);    }         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);    }         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<String, Object> map= new HashMap<>();        try{            UserMapper mapper= SpringUtils.getBean(UserMapper.class);            user= mapper.login(user);            if (user!= null){                //生成token                Map<String, String> 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());        }     }

到此,关于“SpringBoot Mybatis怎么配置文件”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯