1.开发环境
Eclipse版本:Oxygen.2 Release (4.7.2)
maven版本:3.5.0
jdk版本:1.8
mysql版本:mysql-5.5.58-winx64
2.过程
2.1 创建maven项目
输入Group Id 和Artifact Id,点击finish就可以创建maven项目了。(因为我已经创建了,所以会提示BOOT项目已存在)
2.2pom.xml里导入spring boot支持和Mybatis的相关依赖
<!-- 添加springboot继承 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
</parent>
<dependencies>
<!-- 添加springMVC支持 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- MySQL -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.2.5</version>
</dependency>
<!-- dbcp连接池 -->
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<!-- spring核心 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</dependency>
</dependencies>
<build>
<finalName>BOOT</finalName>
<plugins>
<!-- 引入java编译器插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<compilerVersion>1.8</compilerVersion>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!-- 资源文件拷贝插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<configuration>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
</plugins>
</build>
这是完整的pom.xml代码文件
2.3完整项目的目录
bean:实体类包
config:java配置类
controller:控制层
mapper:持久
service:事务逻辑接口
service.impl:事务逻辑实现类
MainApplication.java:项目入口文件
2.4编写config包下的java配置
2.4.1在src/main/resources下创建jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/boot?characterEncoding=utf-8
jdbc.username=
jdbc.password=
2.4.2BootApplication.java
package net.stxy.one.config;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
@Configuration
@PropertySource(value = { "classpath:jdbc.properties" })
@ComponentScan(basePackages = "net.stxy.one")
@SpringBootApplication
public class BootApplication {
@Value("${jdbc.driver}")
private String driverClassName;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
// 配置数据源
@Bean(destroyMethod = "close")
public DataSource dataSource() {
BasicDataSource basicDataSource = new BasicDataSource();
basicDataSource.setDriverClassName(driverClassName);
basicDataSource.setUrl(url);
basicDataSource.setUsername(username);
basicDataSource.setPassword(password);
return basicDataSource;
}
protected SpringApplicationBuilder springApplicationBuilder(SpringApplicationBuilder builder) {
return builder.sources(BootApplication.class);
}
}
2.4.3MybatisConfig.java
package net.stxy.one.config;
import javax.sql.DataSource;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MybatisConfig {
@Bean
@ConditionalOnMissingBean // 当容器里没有指定的Bean的情况下创建该对象
public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource) {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
// 设置数据源
sqlSessionFactoryBean.setDataSource(dataSource);
// 设置别名包
sqlSessionFactoryBean.setTypeAliasesPackage("net.stxy.one.bean");
return sqlSessionFactoryBean;
}
}
2.4.4MybatisScannerConfig.java
package net.stxy.one.config;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@AutoConfigureAfter(MybatisConfig.class) // 保证在MybatisConfig类实例化后才实例化此方法
public class MybatisScannerConfig {
// mapper接口的扫描器
@Bean
public MapperScannerConfigurer mapperScannerConfigurer() {
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
mapperScannerConfigurer.setBasePackage("net.stxy.one.mapper");
return mapperScannerConfigurer;
}
}
2.4.5编写过程
在Spring+SpringMVC+Mybatis整合时,用的是xml的配置,现在整合用的是spring的另一种配置方式--java配置方式。可以对照着以往的配置方式来写一个java配置类。例如 MybatisConfig.java编写
xml的配置方式
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="typeAliasesPackage" value="net.stxy.one.model" />
</bean>
再写java配置类时,需要SqlSessionFactoryBean实例化并返回,property就用实例化的类的set方法设置,如下
@Bean
public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource) {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource);
sqlSessionFactoryBean.setTypeAliasesPackage("net.stxy.one.bean");
return sqlSessionFactoryBean;
}
到此,mybatis已经整合完毕了。
2.5使用MVC结构测试程序
2.5.1创建数据库和数据表
CREATE TABLE `tuser` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`password` varchar(18) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
2.5.2创建实体类Tuser.java
package net.stxy.one.bean;
public class Tuser {
private int id;
private String name;
private String password;
//get 和 set...
}
2.5.3编写Mapper
2.5.3.1TuserMapper.java接口文件
public interface TuserMapper {
List<Tuser> getAllUser();
}
2.5.3.2TuserMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="net.stxy.one.mapper.TuserMapper">
<select id="getAllUser" resultType="Tuser">
select * from tuser
</select>
</mapper>
2.5.4编写service
2.5.4.1TuserService.java接口文件
public interface TuserService {
List<Tuser> getAllUser();
}
2.5.4.2TuserServiceImpl.java 接口实现文件
@Service("tuserService")
public class TuserServiceImpl implements TuserService {
@Autowired
private TuserMapper tuserMapper;
@Override
public List<Tuser> getAllUser() {
return tuserMapper.getAllUser();
}
}
2.5.5编写控制器TuserController.java
@Controller
public class TuserController {
@Autowired
private TuserService tuerService;
@RequestMapping("/tuser")
@ResponseBody
public String getUser() {
List<Tuser> users = tuerService.getAllUser();
return users.toString();
}
}
2.6编写项目入口文件MainApplication.java
public class MainApplication {
public static void main(String[] args) {
SpringApplication.run(BootApplication.class, args);
}
}
2.7启动并测试
直接启动MainApplication,因为springboot内置了tomcat,所以可以直接运行。运行后,在浏览器输入localhost:8080/tuser进行测试
这样就整合完mybatis了。
3另一种写法
mybatis和spirng boot其实有个starter包的,可以直接引用即可使用。
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
然后稍稍的在yml配置以下数据源就可以了
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/demo?characterEncoding=utf8&useSSL=true
username: root
password: 123456
在启动类加个注解又完事了
@MapperScan(basePackages = "")
是不是很方便?
————————————————
版权声明:本文为CSDN博主「李同学09」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34243622/article/details/79483157