SpringBoot项目整合mybatis的方法步骤与实例
1.导入依赖的jar包
springboot项目整合mybatis之前首先要导入依赖的jar包,配置pom.xml文件如下:
4.0.0 com.u springboot-mybatis 1.0-SNAPSHOT org.springframework.boot spring-boot-starter-parent 1.3.0.RELEASE com.us.Application 3.2.7 1.2.2 1.8 1.8 org.springframework.boot spring-boot-starter-web mysql mysql-connector-java 6.0.5 com.mchange c3p0 0.9.5.2 commons-logging commons-logging org.springframework spring-jdbc org.mybatis mybatis ${mybatis.version} org.mybatis mybatis-spring ${mybatis-spring.version} org.apache.commons commons-lang3 3.4
2.配置数据源
pom.xml配置完毕后需要配置数据源了。新建DBConfig类配置数据源,代码如下:
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.context.annotation.Bean;
importorg.springframework.context.annotation.Configuration;
importorg.springframework.core.env.Environment;
importcom.alibaba.druid.pool.DruidDataSource;
importcom.google.common.base.Preconditions;
@Configuration
publicclassDBConfig{
@Autowired
privateEnvironmentenv;
@Bean(name="dataSource")
publicDruidDataSourcedataSource(){
finalStringurl=Preconditions.checkNotNull(env.getProperty("ms.db.url"));
finalStringusername=Preconditions.checkNotNull(env.getProperty("ms.db.username"));
finalStringpassword=env.getProperty("ms.db.password");
finalintmaxActive=Integer.parseInt(env.getProperty("ms.db.maxActive","200"));
DruidDataSourcedataSource=newDruidDataSource();
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
dataSource.setMaxActive(maxActive);
returndataSource;
}
}
3.添加数据库连接信息
在配置文件application.properties中添加数据库连接信息如下:
ms.db.url=jdbc:mysql://localhost:3306/dev?prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8&allowMultiQueries=true ms.db.username=root ms.db.password=admin ms.db.maxActive=500
4.配置mybatis的SqlSessionFactoryBean
数据源配置完以后要配置mybatis的SqlSessionFactoryBean进行扫描mapper,新建MyBatisConfig类代码如下(classpath*:mapper/*.xml为mapper.xml文件路径):
importjavax.sql.DataSource;
importorg.mybatis.spring.SqlSessionFactoryBean;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.context.ApplicationContext;
importorg.springframework.context.annotation.Bean;
importorg.springframework.context.annotation.Configuration;
@Configuration
publicclassMyBatisConfig{
@Autowired
privateDataSourcedataSource;
@Bean(name="sqlSessionFactory")
publicSqlSessionFactoryBeansqlSessionFactory(ApplicationContextapplicationContext)throwsException{
SqlSessionFactoryBeansessionFactory=newSqlSessionFactoryBean();
sessionFactory.setDataSource(dataSource);
sessionFactory.setMapperLocations(applicationContext.getResources("classpath*:mapper/*.xml"));
returnsessionFactory;
}
}
5.配置MapperScannerConfigurer扫描dao层
然后配置MapperScannerConfigurer扫描dao层,新建类MyBatisScannerConfig代码如下(注意与MyBatisConfig不要写在一个类里):
importorg.mybatis.spring.mapper.MapperScannerConfigurer;
importorg.springframework.context.annotation.Bean;
importorg.springframework.context.annotation.Configuration;
@Configuration
publicclassMyBatisScannerConfig{
@Bean
publicMapperScannerConfigurerMapperScannerConfigurer(){
MapperScannerConfigurermapperScannerConfigurer=newMapperScannerConfigurer();
mapperScannerConfigurer.setBasePackage("com.example.*.dao");
mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
returnmapperScannerConfigurer;
}
}
6.开启数据库事务(必须)代码如下
importjavax.sql.DataSource;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.context.annotation.Bean;
importorg.springframework.context.annotation.Configuration;
importorg.springframework.jdbc.datasource.DataSourceTransactionManager;
importorg.springframework.transaction.PlatformTransactionManager;
importorg.springframework.transaction.annotation.TransactionManagementConfigurer;
@Configuration
publicclassTransactionConfigimplementsTransactionManagementConfigurer{
@Autowired
privateDataSourcedataSource;
@Bean(name="transactionManager")
@Override
publicPlatformTransactionManagerannotationDrivenTransactionManager(){
returnnewDataSourceTransactionManager(dataSource);
}
}
7.实战
配置大致就是如此,然后就是新建javabean(省略,文章底部有源码地址)
新建mapper.xml文件(省略,文章底部有源码地址,关于mapper.xml文件编写的疑问可以看我以前的springmvc+mybatis系列文章)
新建dao层。代码如下:
importjava.util.List;
importjava.util.Map;
importcom.example.base.model.User;
importcom.example.config.MyBatisRepository;
publicinterfaceUserDao{
publicListgetList(Mapmap);
}
service层要在实现类上添加@service注解,代码如下:
importjava.util.Map;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.stereotype.Service;
importcom.example.base.dao.UserDao;
importcom.example.base.service.UserService;
@Service
publicclassUserServiceImplimplementsUserService{
@Autowired
privateUserDaouserDao;
publicObjectgetList(Mapmap){
returnuserDao.getList(map);
}
}
controller层也要加@controller注解代码如下:
importjavax.servlet.http.HttpServletRequest;
importjava.util.Map;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.http.HttpStatus;
importorg.springframework.http.ResponseEntity;
importorg.springframework.stereotype.Controller;
importorg.springframework.web.bind.annotation.RequestMapping;
importorg.springframework.web.bind.annotation.RequestMethod;
importorg.springframework.web.bind.annotation.ResponseBody;
importcom.example.base.service.UserService;
importcom.example.base.util.CommonUtil;
importcom.example.demo.ServiceEmail;
@Controller
@RequestMapping(value="/users")
publicclassUserController{
@Autowired
privateUserServiceuserService;
@Autowired
privateServiceEmailserviceEmail;
/***
*api:localhost:8099/users?id=99localhost:8099/users
*
*@paramrequest
*@return
*/
@RequestMapping(method=RequestMethod.GET,produces="application/json;charset=UTF-8")
@ResponseBody
publicResponseEntity>list(HttpServletRequestrequest){
Mapmap=CommonUtil.getParameterMap(request);
returnnewResponseEntity
然后在启动入口类中扫描定义的这些配置累(配置包名可却省只写部分包名)如下:
importjava.util.Arrays;
importorg.springframework.boot.SpringApplication;
importorg.springframework.boot.autoconfigure.SpringBootApplication;
importorg.springframework.boot.builder.SpringApplicationBuilder;
importorg.springframework.boot.context.web.SpringBootServletInitializer;
importorg.springframework.context.ApplicationContext;
importorg.springframework.context.annotation.ComponentScan;
importorg.springframework.scheduling.annotation.EnableScheduling;
@ComponentScan(basePackages="com.example")
@SpringBootApplication
publicclassApplicationextendsSpringBootServletInitializer{
@Override
protectedSpringApplicationBuilderconfigure(SpringApplicationBuilderapplication){
returnapplication.sources(Application.class);
}
publicstaticvoidmain(String[]args)throwsException{
ApplicationContextctx=SpringApplication.run(Application.class,args);
String[]beanNames=ctx.getBeanDefinitionNames();
Arrays.sort(beanNames);
for(StringbeanName:beanNames){
System.out.println(beanName);
}
}
}
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。如果你想了解更多相关内容请查看下面相关链接