SpringBoot第 2 讲:SpringBoot集成MyBatis

  • 2021-08-10
  • Admin

本案例所使用到的IDE

jdk1.8、MySQL5.7

一、新建Maven项目

请参考我关于SpringBoot教程的第一讲内容:

SpringBoot第 1 讲:HelloWorld_秦毅翔的专栏-CSDN博客

二、配置pom.xml文件

2.1、将以下内容替换到pom.xml文件中

  1. <project xmlns="http://maven.apache.org/POM/4.0.0"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0modelVersion>
  5. <parent>
  6. <groupId>org.springframework.bootgroupId>
  7. <artifactId>spring-boot-starter-parentartifactId>
  8. <version>1.5.2.RELEASEversion>
  9. parent>
  10. <groupId>cn.personal.qin.demogroupId>
  11. <artifactId>springboot_demoartifactId>
  12. <version>0.0.1-SNAPSHOTversion>
  13. <packaging>warpackaging>
  14. <name>springbootname>
  15. <url>http://maven.apache.orgurl>
  16. <properties>
  17. <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
  18. <java.version>1.8java.version>
  19. properties>
  20. <dependencies>
  21. <dependency>
  22. <groupId>junitgroupId>
  23. <artifactId>junitartifactId>
  24. <scope>testscope>
  25. dependency>
  26. <dependency>
  27. <groupId>org.springframework.bootgroupId>
  28. <artifactId>spring-boot-starter-webartifactId>
  29. dependency>
  30. <dependency>
  31. <groupId>mysqlgroupId>
  32. <artifactId>mysql-connector-javaartifactId>
  33. dependency>
  34. <dependency>
  35. <groupId>org.mybatis.spring.bootgroupId>
  36. <artifactId>mybatis-spring-boot-starterartifactId>
  37. <version>1.3.2version>
  38. dependency>
  39. <dependency>
  40. <groupId>org.mybatisgroupId>
  41. <artifactId>mybatis-springartifactId>
  42. <version>1.3.1version>
  43. dependency>
  44. <dependency>
  45. <groupId>org.mybatisgroupId>
  46. <artifactId>mybatisartifactId>
  47. <version>3.5.0version>
  48. dependency>
  49. <dependency>
  50. <groupId>com.jolboxgroupId>
  51. <artifactId>bonecp-springartifactId>
  52. <version>0.8.0.RELEASEversion>
  53. dependency>
  54. <dependency>
  55. <groupId>org.springframeworkgroupId>
  56. <artifactId>spring-txartifactId>
  57. dependency>
  58. <dependency>
  59. <groupId>org.springframeworkgroupId>
  60. <artifactId>spring-jdbcartifactId>
  61. dependency>
  62. <dependency>
  63. <groupId>org.springframeworkgroupId>
  64. <artifactId>spring-aspectsartifactId>
  65. dependency>
  66. <dependency>
  67. <groupId>org.apache.tomcat.embedgroupId>
  68. <artifactId>tomcat-embed-jasperartifactId>
  69. <scope>providedscope>
  70. dependency>
  71. dependencies>
  72. <build>
  73. <finalName>${project.artifactId}finalName>
  74. <plugins>
  75. <plugin>
  76. <groupId>org.apache.maven.pluginsgroupId>
  77. <artifactId>maven-resources-pluginartifactId>
  78. <configuration>
  79. <encoding>UTF-8encoding>
  80. configuration>
  81. plugin>
  82. <plugin>
  83. <groupId>org.apache.maven.pluginsgroupId>
  84. <artifactId>maven-compiler-pluginartifactId>
  85. <configuration>
  86. <source>1.7source>
  87. <target>1.7target>
  88. <encoding>UTF-8encoding>
  89. configuration>
  90. plugin>
  91. <plugin>
  92. <groupId>org.springframework.bootgroupId>
  93. <artifactId>spring-boot-maven-pluginartifactId>
  94. plugin>
  95. plugins>
  96. <pluginManagement>
  97. <plugins>
  98. <plugin>
  99. <groupId>org.apache.tomcat.mavengroupId>
  100. <artifactId>tomcat7-maven-pluginartifactId>
  101. <version>2.2version>
  102. plugin>
  103. plugins>
  104. pluginManagement>
  105. build>
  106. project>

2.2、更新Maven下载jar包

项目鼠标右键-->Maven-->Update Project...

三、项目开发

3.1、项目文件结构

请下载项目源代码,并将配置文件拷贝到src/main/resources文件夹中

 3.2、配置MyBatis

3.2.1、MyBatis目录配置类Cast

Cast.java类的作用是用于配置MyBatis中配置文件及mapper、po的位置

  1. package org.personal.qin.demo.config;
  2. public class Cast {
  3. //配置MyBatis
  4. public static final String MYBATIS_CONFIG = "classpath:mybatis-config.xml";
  5. public static final String PO_PACKAGE = "org.personal.qin.demo.po";
  6. public static final String MAPPER_PACKAGE = "org.personal.qin.demo.mapper";
  7. public static final String MAPPER_SCANNER = "classpath:config/mapper/*.xml";
  8. }

3.2.2、MyBatis加载配置文件及配置数据源MyBatisConfig

MyBatisConfig.java类的作用是加载MyBatis配置文件,并配置数据源

  1. package org.personal.qin.demo.config;
  2. import javax.sql.DataSource;
  3. import org.apache.ibatis.session.SqlSessionFactory;
  4. import org.mybatis.spring.SqlSessionFactoryBean;
  5. import org.mybatis.spring.boot.autoconfigure.SpringBootVFS;
  6. import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
  7. import org.springframework.context.annotation.Bean;
  8. import org.springframework.context.annotation.Configuration;
  9. import org.springframework.core.io.Resource;
  10. import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
  11. import org.springframework.core.io.support.ResourcePatternResolver;
  12. @Configuration
  13. public class MyBatisConfig {
  14. /**
  15. * ConditionalOnMissingBean当容器里没有指定的Bean的情况下创建该对象
  16. */
  17. @Bean
  18. @ConditionalOnMissingBean
  19. public SqlSessionFactory sqlSessionFactoryBean(DataSource dataSource) throws Exception {
  20. SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
  21. // 设置数据源
  22. sqlSessionFactoryBean.setDataSource(dataSource);
  23. // 添加一行如下代码,解决setTypeAliasesPackage别名设置不起作用问题
  24. sqlSessionFactoryBean.setVfs(SpringBootVFS.class);
  25. //设置mybatis的主配置文件
  26. ResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver();
  27. Resource mybatisConfigXml = resourceResolver.getResource(Cast.MYBATIS_CONFIG);
  28. sqlSessionFactoryBean.setConfigLocation(mybatisConfigXml);
  29. // 设置别名包
  30. sqlSessionFactoryBean.setTypeAliasesPackage(Cast.PO_PACKAGE);
  31. PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
  32. sqlSessionFactoryBean.setMapperLocations(resolver.getResources(Cast.MAPPER_SCANNER));
  33. return sqlSessionFactoryBean.getObject();
  34. }
  35. }

3.2.3、Mapper扫描MapperScannerConfig

MapperScannerConfig.java类的作用是扫描Mapper

  1. package org.personal.qin.demo.config;
  2. import org.mybatis.spring.mapper.MapperScannerConfigurer;
  3. import org.springframework.boot.autoconfigure.AutoConfigureAfter;
  4. import org.springframework.context.annotation.Bean;
  5. import org.springframework.context.annotation.Configuration;
  6. /**
  7. * 保证在MybatisConfig类实例化后才实例化此方法
  8. */
  9. @Configuration
  10. @AutoConfigureAfter(MyBatisConfig.class)
  11. public class MapperScannerConfig {
  12. /**
  13. * mapper接口的扫描器
  14. *
  15. * @return
  16. */
  17. @Bean
  18. public MapperScannerConfigurer mapperScannerConfigurer() {
  19. MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
  20. mapperScannerConfigurer.setBasePackage(Cast.MAPPER_PACKAGE);
  21. return mapperScannerConfigurer;
  22. }
  23. }

3.3、配置SpringBoot

BootApplication.java文件的作用是配置SpringBoot,并加载jdbc配置文件,配置数据库及数据库连接池,MainApplication.java提供了main方法,是该程序的入口以供程序运行

  1. package org.personal.qin.demo.config;
  2. import javax.sql.DataSource;
  3. import com.jolbox.bonecp.BoneCPDataSource;
  4. import org.springframework.beans.factory.annotation.Value;
  5. import org.springframework.boot.autoconfigure.SpringBootApplication;
  6. import org.springframework.boot.builder.SpringApplicationBuilder;
  7. import org.springframework.context.annotation.Bean;
  8. import org.springframework.context.annotation.ComponentScan;
  9. import org.springframework.context.annotation.Configuration;
  10. import org.springframework.context.annotation.PropertySource;
  11. /**
  12. * 配置文件读取和扫描
  13. */
  14. @Configuration
  15. @PropertySource(value = { "classpath:jdbc.properties" })
  16. @ComponentScan(basePackages = "org.personal.qin.demo")
  17. @SpringBootApplication
  18. public class BootApplication {
  19. 原文:https://blog.csdn.net/qzc70919700/article/details/119576761

联系站长

QQ:769220720

Copyright © SibooSoft All right reserved 津ICP备19011444号