SpringBoot Mybatis 配置文件形式
创始人
2025-06-01 16:46:52
0

开发环境: IDEA 2022.1.4+ Mybatis

目录

1. 概述

2. 单独配置mybatis-config.xml

        2.1 配置内容

        2.2 辅助类

        2.3 调用操作

3. application.yml配置mybatis

        3.1 配置内容

        3.2 辅助类

        3.3 调用操作

4. 结语


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){//生成tokenMap 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: 8090spring:# quartz定时任务配置quartz:# 数据库存储方式job-store-type: jdbcorg:quartz:jobStore:class: org.springframework.scheduling.quartz.LocalDataSourceJobStore#配置数据源datasource:url: jdbc:sqlserver://127.0.0.1:1433;SelectMethod=cursor;databaseName=EFMISusername: sapassword: 123qwe,.driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver#jsonjackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT+8#热部署devtools:restart:enabled: trueadditional-paths: src/main/javaexclude: 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.entitylogging:config: classpath:logback-spring.xml

        3.2 辅助类

@Component
public class SpringUtils implements BeanFactoryPostProcessor {/*** Spring应用上下文环境*/private static ConfigurableListableBeanFactory beanFactory;@Overridepublic 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){//生成tokenMap 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());} }

4. 结语

        实际项目中单独配置mybatis-config.xml较少。一般都写在application.yml里。

        后面继续学习druid得配置以及操作实现。

相关内容

热门资讯

“港股BD之王”拿大单,金额或... 本文来源:时代周报 作者:闫晓寒在今年先后宣布与阿斯利康、日本制药巨头大塚制药达成合作后,和铂医药-...
从合作到反目!千亿房企合景泰富... 本文来源:时代周报 作者:周松清近日,合景泰富集团(01813.HK)发布公告,香港高等法院将清盘呈...
收盘丨A股三大指数震荡分化,银... 12月18日,A股三大指数全天震荡分化,截至收盘,沪指涨0.16%,深成指跌1.29%,创业板指跌2...
华谊兄弟遭阿里创投及马云减持!... 红星资本局12月18日消息,华谊兄弟(300027.SZ)发布公告称,收到股东杭州阿里创业投资有限公...
马斯克身家涨至3200亿美元 11月12日消息,特斯拉在美国时间周一收涨近9%,推动全球首富马斯克的身家再上一层楼。福布斯富豪榜数...
在岸人民币兑美元收报7.215... 11月12日消息,在岸人民币兑美元北京时间03:00收报7.2150,较上一交易日夜盘收盘跌290点...
特朗普为金融机构物色支持加密货... 11月12日消息,据报道,美国候任总统特朗普正准备让美国政府对加密货币采取更宽松的立场,他正在物色对...
新亚制程:股票简称变更为“ST... 11月11日消息,新亚制程公告,公司于2024年11月11日收到中国证监会浙江证监局下发的《行政处罚...
波罗的海干散货运价指数涨4.2... 11月11日消息,波罗的海干散货运价指数报1558点,涨4.21%。
左手分红右手补流,华东理工“学... 三年半分红5400万元。作者|卓玛编辑|刘钦文小小一枚芯片要如何保护?半导体器件的生产流程主要分为两...