参考:http://blog.csdn.net/isea533/article/details/50359390
他数据源使用的是阿里巴巴的druid数据源,这里使用c3p0
官网:http://www.mybatis.org/找样例下载最新的
<groupId>org.mybatis.spring.bootgroupId>`
<artifactId>mybatis-spring-bootartifactId>
<version>1.3.0version>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starterartifactId>
<groupId>org.mybatisgroupId>
<artifactId>mybatisartifactId>
<version>3.4.1version>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
此外还有jdbc驱动包,数据库连接池包,根据需求添加。
默认命名为application.yml,会自动识别配置。
yml语法参考:http://blog.csdn.net/u011250882/article/details/48770237
#数据源配置 这里是c3p0数据源配置 注意冒号后面要有空格
datasource:
driverClass: com.mysql.cj.jdbc.Driver
jdbcUrl: jdbc:mysql://localhost:3306/mail??characterEncoding=utf-8&serverTimezone=UTC
user: root
password: ******
maxIdleTime: 60
initialPoolSize: 8
minPoolSize: 5
maxPoolSize: 10
# 使用c3p0数据源
type: com.mchange.v2.c3p0.ComboPooledDataSource
# MyBatis
mybatis:
# 配置类型别名
typeAliasesPackage: model
# 配置mapper的扫描,找到所有的mapper.xml映射文件
mapperLocations: classpath:mapper/*.xml
# 加载全局的配置文件
configLocation: classpath:mybatis-config.xml
实际工作中一般都使用xml配置,这里使用我不熟悉的注解配置,所以上面的mapperLocations可以不配置。
参考网址http://blog.csdn.net/javahighness/article/details/53044655
又一个:http://blog.csdn.net/isea533/article/details/50359390
<configuration>
<properties>
<property name="dialect" value="mysql" />
properties>
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
<setting name="cacheEnabled" value="true" />
<setting name="lazyLoadingEnabled" value="true" />
<setting name="multipleResultSetsEnabled" value="true" />
<setting name="useColumnLabel" value="true" />
<setting name="useGeneratedKeys" value="false" />
<setting name="defaultExecutorType" value="SIMPLE" />
<setting name="defaultStatementTimeout" value="25000" />
settings>
configuration>
分页插件参考:http://412887952-qq-com.iteye.com/blog/2313030
@Configuration
@EnableTransactionManagement
public class MybatisConfiguration implements TransactionManagementConfigurer {
private static Log logger = LogFactory.getLog(MybatisConfiguration.class);
//配置文件取值的第一种方法
@Value("${mybatis.configLocation}")
private String configLocation;
@Value("${mybatis.mapperLocations}")
private String mapperLocations;
@Value("${mybatis.typeAliasesPackage}")
private String typeAliasesPackage;
@Autowired
private DataSource dataSource;
//配置文件读取的第二种方式
@Bean
@ConfigurationProperties("datasource")
public ComboPooledDataSource dataSource(){
return new ComboPooledDataSource();
}
@Bean
public PageHelper pageHelper(){
logger.info("MyBatis分页插件PageHelper");
//分页插件
PageHelper pageHelper = new PageHelper();
Properties properties = new Properties();
properties.setProperty("offsetAsPageNum", "true");
properties.setProperty("rowBoundsWithCount", "true");
properties.setProperty("reasonable", "true");
properties.setProperty("supportMethodsArguments", "true");
properties.setProperty("returnPageInfo", "check");
properties.setProperty("params", "count=countSql");
pageHelper.setProperties(properties);
return pageHelper;
}
@Bean(name = "sqlSessionFactory")
public SqlSessionFactory sqlSessionFactoryBean() {
try {
SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
sessionFactoryBean.setDataSource(dataSource);
// 读取配置
sessionFactoryBean.setTypeAliasesPackage(typeAliasesPackage);
//mapper文件目录
/*Resource[] resources = new PathMatchingResourcePatternResolver()
.getResources(mapperLocations);
sessionFactoryBean.setMapperLocations(resources);*/
//读取mybatis配置文件,插件配置
sessionFactoryBean.setConfigLocation(
new DefaultResourceLoader().getResource(configLocation));
//添加插件 (改为使用配置文件加载了)
sessionFactoryBean.setPlugins(new Interceptor[]{pageHelper()});
return sessionFactoryBean.getObject();
} catch (IOException e) {
logger.warn("mybatis resolver mapper*xml is error");
return null;
} catch (Exception e) {
logger.warn("mybatis sqlSessionFactoryBean create error");
return null;
}
}
@Bean
@Override
public PlatformTransactionManager annotationDrivenTransactionManager() {
return new DataSourceTransactionManager(dataSource);
}
}
注意:
1.这里直接用的注解方式,所以没有xml文件,上面注释掉的代码使用会启动报错。
2.分页的插件要使用4.X版本的,5.0版本以上的PageHelper没有实现Interceptor接口,会报错,5.0版本怎么用网上没找到。
这里使用mysql随便建一个数据库,一个用户表,字段就放个id和name就可以了。
只是为了测试框架是否搭建成功,没有写前端,直接调用接口,有返回内容就可以了。
这里使用mybatis注解方式
参考地址:http://blog.csdn.net/ExcellentYuXiao/article/details/53262928
基础:http://www.tuicool.com/articles/RVraiqM
public interface UserDao {
@Select("select * from User where id = #{id}")
User queryById(Long id);
}
@SpringBootApplication
@ComponentScan("controller,service,conf")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class);
}
@Bean
public EmbeddedServletContainerFactory servletContainer(){
TomcatEmbeddedServletContainerFactory factory = new TomcatEmbeddedServletContainerFactory();
factory.setPort(8033);
factory.setContextPath("/sbmybatis");
return factory;
}
}
注意:扫描的包和注解的添加,不然不能注入类,配置文件的包也要扫描。
项目地址:https://gitee.com/yangqingh/springboot-mybatis.git