记录在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项目

输入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 = "")

是不是很方便?

评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值