记录在eclipse用maven整合springboot+mybatis

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项目

记录在eclipse用maven整合springboot+mybatis_第1张图片

记录在eclipse用maven整合springboot+mybatis_第2张图片

记录在eclipse用maven整合springboot+mybatis_第3张图片

输入Group Id 和Artifact Id,点击finish就可以创建maven项目了。(因为我已经创建了,所以会提示BOOT项目已存在)

记录在eclipse用maven整合springboot+mybatis_第4张图片

2.2pom.xml里导入spring boot支持和Mybatis的相关依赖


	
		org.springframework.boot
		spring-boot-starter-parent
		2.0.0.RELEASE
	

	
		
		
			org.springframework.boot
			spring-boot-starter-web
		
		
		
			mysql
			mysql-connector-java
		
		
		
			org.mybatis
			mybatis-spring
			1.3.0
		
		
			org.mybatis
			mybatis
			3.2.5
		
		
		
			commons-dbcp
			commons-dbcp
			1.4
		
		
		
			org.springframework
			spring-tx
		
		
			org.springframework
			spring-jdbc
		
		
			org.springframework
			spring-aspects
		
	

	
		BOOT
		
			
			
				org.apache.maven.plugins
				maven-compiler-plugin
				
					1.8
					1.8
					1.8
					UTF-8
				
			
			
			
				org.apache.maven.plugins
				maven-resources-plugin
				
					UTF-8
				
			
		
	

这是完整的pom.xml代码文件

2.3完整项目的目录

记录在eclipse用maven整合springboot+mybatis_第5张图片  

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的配置方式


     
     

再写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 getAllUser();
}

2.5.3.2TuserMapper.xml




	

2.5.4编写service

2.5.4.1TuserService.java接口文件

public interface TuserService {
	List getAllUser();
}

2.5.4.2TuserServiceImpl.java 接口实现文件

@Service("tuserService")
public class TuserServiceImpl implements TuserService {
	@Autowired
	private TuserMapper tuserMapper;

	@Override
	public List getAllUser() {
		return tuserMapper.getAllUser();
	}

}

2.5.5编写控制器TuserController.java

@Controller
public class TuserController {
	@Autowired
	private TuserService tuerService;

	@RequestMapping("/tuser")
	@ResponseBody
	public String getUser() {
		List 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进行测试

记录在eclipse用maven整合springboot+mybatis_第6张图片

 

这样就整合完mybatis了。

3另一种写法

mybatis和spirng boot其实有个starter包的,可以直接引用即可使用。


      org.mybatis.spring.boot
      mybatis-spring-boot-starter
      1.3.2

然后稍稍的在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 = "")

是不是很方便?

你可能感兴趣的:(记录在eclipse用maven整合springboot+mybatis)