@bean public performanceinterceptor performanceinterceptor() { performanceinterceptor performanceinterceptor = new performanceinterceptor(); /*<!-- sql 执行性能分析,开发环境使用,线上不推荐。 maxtime 指的是 sql 最大执行时长 -->*/ performanceinterceptor.setmaxtime(1000); /*<!--sql是否格式化 默认false-->*/ performanceinterceptor.setformat(false); return performanceinterceptor; }
<plugins> <!-- | 分页插件配置 | 插件提供二种方言选择:1、默认方言 2、自定义方言实现类,两者均未配置则抛出异常! | overflowcurrent 溢出总页数,设置第一页 默认false | optimizetype count优化方式 ( 版本 2.0.9 改为使用 jsqlparser 不需要配置 ) | --> <!-- 注意!! 如果要支持二级缓存分页使用类 cachepaginationinterceptor 默认、建议如下!! --> <plugin interceptor="com.baomidou.mybatisplus.plugins.paginationinterceptor"> <property name="sqlparser" ref="自定义解析类、可以没有" /> <property name="localpage" value="默认 false 改为 true 开启了 pageheper 支持、可以没有" /> <property name="dialectclazz" value="自定义方言类、可以没有" /> </plugin> </plugins>
@configuration public class webconfig implements webmvcconfigurer { @override public void configuremessageconverters(list<httpmessageconverter<?>> converters) { fastjsonhttpmessageconverter fastjsonhttpmessageconverter = new fastjsonhttpmessageconverter(); fastjsonconfig fj = new fastjsonconfig(); fj.setserializerfeatures(serializerfeature.skiptransientfield); fastjsonhttpmessageconverter.setfastjsonconfig(fj); converters.add(fastjsonhttpmessageconverter); } }
<plugins> <!-- sql 执行分析拦截器 stopproceed 发现全表执行 delete update 是否停止运行 --> <plugin interceptor="com.baomidou.mybatisplus.plugins.sqlexplaininterceptor"> <property name="stopproceed" value="false" /> </plugin> </plugins>
<plugins> .... <!-- sql 执行性能分析,开发环境使用,线上不推荐。 maxtime 指的是 sql 最大执行时长 --> <plugin interceptor="com.baomidou.mybatisplus.plugins.performanceinterceptor"> <property name="maxtime" value="100" /> <!--sql是否格式化 默认false--> <property name="format" value="true" /> </plugin> </plugins>
@version
注解<bean class="com.baomidou.mybatisplus.plugins.optimisticlockerinterceptor"/>
public class user { @version private integer version; ... }
public class mysqlinjector extends autosqlinjector { @override public void inject(configuration configuration, mapperbuilderassistant builderassistant, class<?> mapperclass, class<?> modelclass, tableinfo table) { /* 添加一个自定义方法 */ deletealluser(mapperclass, modelclass, table); } public void deletealluser(class<?> mapperclass, class<?> modelclass, tableinfo table) { /* 执行 sql ,动态 sql 参考类 sqlmethod */ string sql = "delete from " + table.gettablename(); /* mapper 接口方法名一致 */ string method = "deleteall"; sqlsource sqlsource = languagedriver.createsqlsource(configuration, sql, modelclass); this.addmappedstatement(mapperclass, method, sqlsource, sqlcommandtype.delete, integer.class); } }
public interface usermapper extends basemapper<user> { /** * 自定义注入方法 */ int deleteall(); }
<!-- 定义 mp 全局策略,安装集成文档部分结合 --> <bean id="globalconfig" class="com.baomidou.mybatisplus.entity.globalconfiguration"> ..... <!-- 自定义注入 deleteall 方法 --> <property name="sqlinjector" ref="mysqlinjector" /> </bean> <!-- 自定义注入器 --> <bean id="mysqlinjector" class="com.baomidou.test.mysqlinjector" />
mymetaobjecthandler
的用法,前一篇文章有用到
logicsqlinjector
的用法,前一篇有用到
<dependency> <groupid>com.baomidou</groupid> <artifactid>dynamic-datasource-spring-boot-starter</artifactid> <version>2.x.x</version> </dependency>
spring: datasource: dynamic: primary: master #设置默认的数据源或者数据源组,默认值即为master,如果你主从默认下主库的名称就是master可不定义此项。 datasource: master: username: root password: 123456 driver-class-name: com.mysql.jdbc.driver url: jdbc:mysql://47.100.20.186:3306/dynamic?characterencoding=utf8&usessl=false slave_1: username: root password: 123456 driver-class-name: com.mysql.jdbc.driver url: jdbc:mysql://47.100.20.186:3307/dynamic?characterencoding=utf8&usessl=false slave_2: username: root password: 123456 driver-class-name: com.mysql.jdbc.driver url: jdbc:mysql://47.100.20.186:3308/dynamic?characterencoding=utf8&usessl=false #......省略 #以上会配置一个默认库master,一个组slave下有两个子库slave_1,slave_2
sharding: jdbc: datasource: names: ds_master,ds_slave_0,ds_slave_1 ds_master: ... ds_slave_0: ... ds_slave_1: ... config: masterslave: load-balance-algorithm-type: round_robin name: ds_ms master-data-source-name: ds_master slave-data-source-names: ds_slave_0,ds_slave_1
oraclekeygenerator
配置主键自增abstractwrapper
这个条件包装类,通常使用两个实现querywrapper
和updatewrapper
alleq
,常用alleq(map<r, v> params)
和alleq(map<r, v> params, boolean null2isnull)
,分别表示key对应的值为null,需不需要判断isnull;alleq(bipredicate<r, v> filter, map<r, v> params)
应该比较少用
map<string, object> map = new hashmap<>(); map.put("daily_price_id", 1117l); querywrapper<dailyprice> querywrapper = new querywrapper<dailyprice>().alleq((k, v) -> ((long) v) > 2000l, map); list<dailyprice> dailyprices = dailypriceservice.getbasemapper().selectlist(querywrapper);
eq
,很明显,=ne
不等于gt
,lt
,范围between
,like
,常用的关键字都有last
直接拼接sql到最后,如:last("limit 1")
transient
字段,在controller层返回的时候,json会过滤掉它serializerfeature.skiptransientfield
@configuration public class webconfig implements webmvcconfigurer { @override public void configuremessageconverters(list<httpmessageconverter<?>> converters) { fastjsonhttpmessageconverter fastjsonhttpmessageconverter = new fastjsonhttpmessageconverter(); fastjsonconfig fj = new fastjsonconfig(); // 跳过transient属性的值,浏览器兼容,日期自动格式化 fj.setserializerfeatures(serializerfeature.skiptransientfield,serializerfeature.browsercompatible,serializerfeature.writedateusedateformat); fastjsonhttpmessageconverter.setfastjsonconfig(fj); converters.add(fastjsonhttpmessageconverter); } }
serializerfeature.writedateusedateformat
即可官网gitee:https://baomidou.gitee.io/mybatis-plus-doc/#/page-plugin
官网:https://mp.baomidou.com/guide/wrapper.html#abstractwrapper
如对本文有疑问, 点击进行留言回复!!
Android 4.0使用Kotlin调用C语言以及汇编语言
Java Class.forName()用法和newInstance()方法原理解析
网友评论