1.加入mybatis-spring-boot-stater的Maven依赖
1
2
3
4
5
|
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version> 1.1 . 1 </version>
</dependency>
|
2.配置数据源
在src/main/resource中,application.properties配置文件中,这里面添加了一些数据库连接的信息
1
2
3
4
|
spring.datasource.url=jdbc:mysql: //localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver- class -name=com.mysql.jdbc.Driver
|
3.代码注入数据源
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
package com.example;
import javax.sql.DataSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.boot.web.servlet.ServletListenerRegistrationBean;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.core.env.Environment;
import org.springframework.web.servlet.DispatcherServlet;
import com.alibaba.druid.pool.DruidDataSource;
import com.example.Listener.IndexListener;
import com.example.filter.IndexFilter;
import com.example.servlet.MyServlet;
@SpringBootApplication
public class SpringBootSimpleApplication {
@Autowired
private Environment env;
@Bean
public DataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setUrl(env.getProperty( "spring.datasource.url" ));
dataSource.setUsername(env.getProperty( "spring.datasource.username" )); //用户名
dataSource.setPassword(env.getProperty( "spring.datasource.password" )); //密码
dataSource.setDriverClassName(env.getProperty( "spring.datasource.driver-class-name" ));
dataSource.setInitialSize( 2 );
dataSource.setMaxActive( 20 );
dataSource.setMinIdle( 0 );
dataSource.setMaxWait( 60000 );
dataSource.setValidationQuery( "SELECT 1" );
dataSource.setTestOnBorrow( false );
dataSource.setTestWhileIdle( true );
dataSource.setPoolPreparedStatements( false );
return dataSource;
}
public static void main(String[] args) {
SpringApplication.run(SpringBootSimpleApplication. class , args);
}
}
|
4.增加MyBatis的配置
MyBatisConfig.java类:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
package com.example.mybatis;
import javax.sql.DataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.transaction.annotation.TransactionManagementConfigurer;
@Configuration
//加上这个注解,使得支持事务
@EnableTransactionManagement
public class MyBatisConfig implements TransactionManagementConfigurer {
@Autowired
private DataSource dataSource;
@Override
public PlatformTransactionManager annotationDrivenTransactionManager() {
return new DataSourceTransactionManager(dataSource);
}
@Bean (name = "sqlSessionFactory" )
public SqlSessionFactory sqlSessionFactoryBean() {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
bean.setDataSource(dataSource);
try {
return bean.getObject();
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
@Bean
public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
return new SqlSessionTemplate(sqlSessionFactory);
}
}
|
MyBatisMapperScannerConfig.java类:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
package com.example.mybatis;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* 扫描mybatis的接口
*/
@Configuration
// 因为这个对象的扫描,需要在MyBatisConfig的后面注入,所以加上下面的注解
@AutoConfigureAfter (MyBatisConfig. class )
public class MyBatisMapperScannerConfig {
@Bean
public MapperScannerConfigurer mapperScannerConfigurer() {
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
//获取之前注入的beanName为sqlSessionFactory的对象
mapperScannerConfigurer.setSqlSessionFactoryBeanName( "sqlSessionFactory" );
//指定xml配置文件的路径
mapperScannerConfigurer.setBasePackage( "com.example.mybatis.mapper" );
return mapperScannerConfigurer;
}
}
|
5.mybatis接口配置,这里使用student表作为示例
使用@Mapper注解来标识一个接口为MyBatis的接口,MyBatis会自动寻找这个接口
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
package com.example.mybatis.mapper;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
@Mapper
public interface StudentMapper {
@Select ( "select * from student;" )
public List<Map<String,Object>> find();
@Insert ( "insert into student(id,name,age,score_sum,score_avg) " +
"values(#{id},'Jim',33,200,100)" )
public int insert( @Param ( "id" ) int id);
}
|
6.service业务层调用接口
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
package com.example.mybatis;
import java.util.List;
import java.util.Map;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.example.mybatis.mapper.StudentMapper;
@Service
public class StuMybatisService {
@Autowired
private StudentMapper studentMapper;
public List<Map<String,Object>> find(){
return studentMapper.find();
}
public int insert( int id){
return studentMapper.insert(id);
}
}
|
7.controller控制层调用service业务层
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
package com.example.mybatis;
import java.util.List;
import java.util.Map;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping ( "/stumybatis" )
public class StuMybatisController {
private static Logger logger = LogManager.getLogger(StuMybatisController. class );
@Autowired
private StuMybatisService stuMybatisService;
@RequestMapping ( "/list" )
public List<Map<String,Object>> getStus(){
logger.info( "从数据库读取Student集合" );
return stuMybatisService.find();
}
@RequestMapping ( "/add" )
public void addStus(){
logger.info( "student表中插入数据" );
stuMybatisService.insert( 2 );
}
}
|
最终启动程序,进行访问:
http://localhost:8080/stumybatis/list
返回结果:
1
|
[{ "score_sum" : 180.0 , "name" : "张三" , "id" : 1 , "age" : 25 , "score_avg" : 90.0 },{ "score_sum" : 200.0 , "name" : "Jim" , "id" : 2 , "age" : 33 , "score_avg" : 100.0 }]
|
以上所述是小编给大家介绍的Spring Boot整合MyBatis的操作过程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
原文链接:http://www.cnblogs.com/web424/p/6756957.html