今天带小飞飞飞贼带大家整理一波 Springboot+Mybatis,注意 没有其他杂七杂八,只有单纯的mybatis整合。
首先什么是SpringBoot呢?我了解到的SpringBoot是Spring社区较新的一个项目,大大的简化了配置,在上一篇中我们整合了SSM+Redis,在配置文件上,我们都花了好久,好多功夫。那么在实际应用中,时间这么宝贵,怎么能花时在这些配置上面呢?于是我们今天就来学习一下Springboot+Mybatis的配置。我们采用java配置的方式,不在使用Xml文件配置的方式,这也是Spring4.X以后,Spring官方推荐的配置。
还是一样,话不多说,先上代码:
- 数据库如下(SqlServer)
- 我的项目目录
- Maven的Pom文件如下
- <!-- 必须将 parent 设置为Spring Boot 的parent,其中包含大量的默认配置,简化开发 -->
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
</parent>
<groupId>SpringBootDemo2</groupId>
<artifactId>SpringBootDemo2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name />
<description />
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- mybatis版本号 -->
<mybatis.version>3.4.1</mybatis.version>
<!-- mybatis和spring整合的jar -->
<mybatis.spring.version>1.3.1</mybatis.spring.version>
<!-- mysql链接的jar -->
<mysql.connector.version>5.0.8</mysql.connector.version>
<!-- C3P0连接池 版本 -->
<c3p0-version>0.9.2.1</c3p0-version>
<!-- sqlServer connector -->
<sqljdbc4-version>4.0</sqljdbc4-version>
</properties>
<!-- 导入SpringBoot对web的支持 -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- 使用内嵌的tomcat -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<!-- 开发时候使用内置的tomcat 发布时不使用 -->
<scope>provided</scope>
</dependency>
<!-- c3p0 star -->
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>${c3p0-version}</version>
</dependency>
<dependency>
<groupId>com.mchange</groupId>
<artifactId>mchange-commons-java</artifactId>
<version>0.2.12</version>
</dependency>
<!-- c3p0 star -->
<!-- sqlServer-connector -->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>sqljdbc4</artifactId>
<version>${sqljdbc4-version}</version>
</dependency>
<!-- sqlServer-connector -->
<!-- mybatis start -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis.spring.version}</version>
</dependency>
<!--mybatis end -->
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-war-plugin</artifactId>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
- 对SpringBoot的入口类配置
- 接下来就是配置SpringBoot和Mybatis了,其实java配置和Xml配置很像,只是把在Xml文件中的配置转化到java里面来,需要注意的是@Configuration这个在类上的注解就相当于把这个类当成是一个XMl配置,@Bean(name = "dataSource") 这个配置 就相当于 <bean name="dataSource" class=".....">....</bean>....(偷个小懒,哈哈),接下来是配置C3P0数据源,SqlSessionFactory等等。@Value注解就是把Properties中的配置读取出来,然后赋值到各个属性上,然后调用就好了。值得一提的是网络上好多整合中提供 new ClassPathResource("classpath:mybatis/mybatisConfig.xml") 这个方法来加载mybatis的配置文件,但是我找不到,会报空指针异常。
@Configuration
public class Spring_Dao {
@Value(value = "${jdbc.driverClass}")
private String driverClass;
@Value(value = "${jdbc.jdbcUrl}")
private String jdbcUrl;
@Value(value = "${jdbc.user}")
private String user;
@Value(value = "${jdbc.password}")
private String password;
/**
* 配置数据源
*
* @return
* @throws PropertyVetoException
*/
@Bean(name = "dataSource")
public ComboPooledDataSource dataSource() {
try {
ComboPooledDataSource dataSources = new ComboPooledDataSource();
dataSources.setDriverClass(driverClass);
dataSources.setJdbcUrl(jdbcUrl);
dataSources.setUser(user);
dataSources.setPassword(password);
return dataSources;
} catch (PropertyVetoException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
/**
* 配置SqlSessionFactory
*
* @return
*/
@Bean(name = "sqlSessionFactory")
public SqlSessionFactory sqlSessionFactoryBean() {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setConfigLocation(new DefaultResourceLoader().getResource("classpath:mybatis/mybatisConfig.xml"));
//new ClassPathResource("classpath:mybatis/mybatisConfig.xml") 网络上很多这个,但是我读取不到
bean.setDataSource(dataSource());
try {
return bean.getObject();
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
}- 接下来就是配置mapper扫描器了
- @Configuration
// 由于MapperScannerConfigurer执行的比较早,所以必须有下面的注解
@AutoConfigureAfter(Spring_Dao.class)
public class Spring_MapperScan {
/**
* 配置Mapper扫描
*
* @return
*/
@Bean
public MapperScannerConfigurer mapperScannerConfigurer() {
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
mapperScannerConfigurer.setBasePackage("com.itheima.mapper");
mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
return mapperScannerConfigurer;
}
} - 到这里差不多已经配置好了。怎么样配置还是蛮简单的把,也就是把Xml转化为java配置,SpringBoot的相关介绍,在这一篇中就不多做介绍了。
- 测试类如下
- 运行结果如下,运行入口函数SpringBootDemoApplication,然后在浏览器输入http://localhost:8080/findAllUser.action
- 控制台打印结果如下(偷个小懒,就不把东西打印到页面啦)