详解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)标签,这样他会被忽略
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。