详解Spring boot上配置与使用mybatis plus
http://mp.baomidou.com/#/?id=%e7%ae%80%e4%bb%8b这个是mybatisplus的官方文档,上面是mybtisplus的配置使用方法,以及一些功能的介绍
下面开始配置
maven依赖
org.mybatis.spring.boot mybatis-spring-boot-starter 1.1.1 com.baomidou mybatis-plus 2.0-beta
config文件
@Configuration
publicclassMybatisPlusConfig{
@Autowired
privateDataSourcedataSource;
@Autowired
privateMybatisPropertiesproperties;
@Autowired
privateResourceLoaderresourceLoader=newDefaultResourceLoader();
@Autowired(required=false)
privateInterceptor[]interceptors;
@Autowired(required=false)
privateDatabaseIdProviderdatabaseIdProvider;
/**
*mybatis-plus分页插件
*/
@Bean
publicPaginationInterceptorpaginationInterceptor(){
PaginationInterceptorpage=newPaginationInterceptor();
page.setDialectType("mysql");
returnpage;
}
/**
*这里全部使用mybatis-autoconfigure已经自动加载的资源。不手动指定
*配置文件和mybatis-boot的配置文件同步
*@return
*/
@Bean
publicMybatisSqlSessionFactoryBeanmybatisSqlSessionFactoryBean(){
MybatisSqlSessionFactoryBeanmybatisPlus=newMybatisSqlSessionFactoryBean();
mybatisPlus.setDataSource(dataSource);
mybatisPlus.setVfs(SpringBootVFS.class);
if(StringUtils.hasText(this.properties.getConfigLocation())){
mybatisPlus.setConfigLocation(this.resourceLoader.getResource(this.properties.getConfigLocation()));
}
mybatisPlus.setConfiguration(properties.getConfiguration());
if(!ObjectUtils.isEmpty(this.interceptors)){
mybatisPlus.setPlugins(this.interceptors);
}
MybatisConfigurationmc=newMybatisConfiguration();
mc.setDefaultScriptingLanguage(MybatisXMLLanguageDriver.class);
mybatisPlus.setConfiguration(mc);
if(this.databaseIdProvider!=null){
mybatisPlus.setDatabaseIdProvider(this.databaseIdProvider);
}
if(StringUtils.hasLength(this.properties.getTypeAliasesPackage())){
mybatisPlus.setTypeAliasesPackage(this.properties.getTypeAliasesPackage());
}
if(StringUtils.hasLength(this.properties.getTypeHandlersPackage())){
mybatisPlus.setTypeHandlersPackage(this.properties.getTypeHandlersPackage());
}
if(!ObjectUtils.isEmpty(this.properties.resolveMapperLocations())){
mybatisPlus.setMapperLocations(this.properties.resolveMapperLocations());
}
returnmybatisPlus;
}
}
插件以@bean的形式添加在config文件里例如:
@Bean
publicPaginationInterceptorpaginationInterceptor(){
PaginationInterceptorpage=newPaginationInterceptor();
page.setDialectType("mysql");
returnpage;
}
这是一个分页插件。
代码生成器参考官方文档,但是他的代码生成器可供修改的地方不多,只能控制一下代码生成路径之类的,自由度不高,推荐把mybatisplus代码生成部分单独抽出来,修改成自己合适的,再打成jar包进行依赖。
springbootproperties文件配置
#mybatis_config mybatis.mapper-locations=classpath:com/boot/mapper/xml/*Mapper.xml mybatis.typeAliasesPackage=com.boot.entity
前一个是xml文件的路径
后面一个时别名包路径
在springboot的启动类上加上注解
@MapperScan("com.boot.mapper*")
@SpringBootApplication
publicclassBootApplication{
@mapperscan里面是dao的扫描路径
mybatisplus提供了比较齐全的crud即增删改查,不需要在mapper.xml里写sql可以直接调用
例子:
//可以在controller: Eggegg=newEgg(); eggService.insert(egg); //可以在service Eggegg=newEgg(); this.selectList(newEntityWrapper(egg));//mybatisplus提供依靠实体查询的方法的写法 //也可以 mapper.selectList(newEntityWrapper (egg));
分页查询demo:
dao:返回list
ListgetPage(Paginationpage,RoleParamparam)throwsDataAccessException;
xml:照着普通sql写就可以了,其他的会自动拼接
select fromella_role
service:
publicPagegetPage(RoleParamparam){ //new一个page初始化传入current当前页,size每页几个,order排序(默认asc要改的话page.setAsc(false);) Page page=newPage (param.getCurrent(),param.getSize(),param.getOrder()); page.setRecords(iRoleMapper.getPage(page,param)); returnpage; }
end
接下来是一些小贴士
生成的实体里主键要加上@TableId注解不然会报错
数据库里有下划线的字段在查询返回是会取不到值,需要在config文件中的mybatisSqlSessionFactoryBean方法下加上
mybatisPlus.setDbColumnUnderline(true);
domain里的所有属性都会映射到数据库的字段上,如果你加上数据库里没有但要用的属性需要在上面加上@TableField(exist=false)标签,这样他会被忽略
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。