代码拉取完成,页面将自动刷新
同步操作将从 dromara/mendmix-cloud 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
<dependency>
<groupId>com.jeesuite</groupId>
<artifactId>jeesuite-mybatis</artifactId>
<version>1.0.2</version>
</dependency>
已实现方法
已经无缝对接优秀的mybatis增强框架 Mapper ,该框架功能强大,该部分推荐集成Mapper框架。
#mysql global config
db.shard.size=1000
db.driverClass=com.mysql.jdbc.Driver
db.initialSize=2
db.minIdle=1
db.maxActive=10
db.maxWait=60000
db.timeBetweenEvictionRunsMillis=60000
db.minEvictableIdleTimeMillis=300000
db.testOnBorrow=false
db.testOnReturn=false
#master
master.db.url=jdbc:mysql://localhost:3306/demo_db?seUnicode=true&characterEncoding=UTF-8
master.db.username=root
master.db.password=123456
master.db.initialSize=2
master.db.minIdle=2
master.db.maxActive=20
#slave ....
slave1.db.url=jdbc:mysql://localhost:3306/demo_db2?seUnicode=true&characterEncoding=UTF-8
slave1.db.username=root
slave1.db.password=123456
#slave2 ....
slave2.db.url=jdbc:mysql://localhost:3306/demo_db3?seUnicode=true&characterEncoding=UTF-8
slave2.db.username=root
slave2.db.password=123456
#如果你要使用分库功能
#master
group1.master.db.url=jdbc:mysql://localhost:3306/demo_db?seUnicode=true&characterEncoding=UTF-8
group1.master.db.username=root
group1.master.db.password=123456
group1.master.db.initialSize=2
group1.master.db.minIdle=2
group1.master.db.maxActive=20
#slave ....
group1.slave1.db.url=jdbc:mysql://localhost:3306/demo_db2?seUnicode=true&characterEncoding=UTF-8
group1.slave1.db.username=root
group1.slave1.db.password=123456
slave1n,group1n依次递增(第一组group0默认省略)
<!--除了datasource配置外,其他都与原生配置一样-->
<bean id="routeDataSource" class="com.jeesuite.mybatis.datasource.MutiRouteDataSource" />
<bean id="transactionTemplate"
class="org.springframework.transaction.support.TransactionTemplate">
<property name="transactionManager" ref="transactionManager" />
<property name="isolationLevelName" value="ISOLATION_DEFAULT" />
<property name="propagationBehaviorName" value="PROPAGATION_REQUIRED" />
</bean>
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="routeDataSource" />
</bean>
<bean id="routeSqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="configLocation" value="classpath:mybatis-configuration.xml" />
<property name="mapperLocations" value="classpath:mapper/*Mapper.xml" />
<property name="dataSource" ref="routeDataSource" />
<property name="typeAliasesPackage" value="com.jeesuite.demo.dao.entity" />
<property name="plugins">
<array>
<bean class="com.jeesuite.mybatis.plugin.JeesuiteMybatisPluginContext">
<!--可选值:default(默认),mapper3(集成mapper框架)-->
<property name="crudDriver" value="default" />
<property name="mapperLocations" value="classpath:mapper/*Mapper.xml" />
<!--
可选值:cache(自动缓存),rwRoute(读写分离),dbShard(分库路由)
-->
<property name="interceptorHandlers" value="cache" />
</bean>
</array>
</property>
</bean>
<!--集成Mapper框架的配置,此处修改为tk.mybatis.spring.mapper.MapperScannerConfigurer-->
<bean class="com.jeesuite.mybatis.spring.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="routeSqlSessionFactory" />
<property name="basePackage" value="com.jeesuite.demo.dao.mapper" />
</bean>
只需要在mapper接口增加@com.jeesuite.mybatis.plugin.cache.annotation.Cache标注
public interface UserEntityMapper extends BaseMapper<UserEntity> {
@Cache
public UserEntity findByMobile(@Param("mobile") String mobile);
@Cache
List<String> findByType(@Param("type") int type);
}
配置完成即可,查询会自动缓存、更新会自动更新。
如果不全量更新会导致缓存的内容是有部分字段,因为update后会那最新的entity更新缓存。
/**
* 查询并缓存结果
* @param entityClass 实体类class (用户组装实际的缓存key)
* @param key 缓存的key(和entityClass一起组成真实的缓存key。<br>如entityClass=UserEntity.class,key=findlist,实际的key为:UserEntity.findlist)
* @param expireSeconds 过期时间,单位:秒
* @param dataCaller 缓存不存在数据加载源
* @return
*/
public static <T> T queryTryCache(Class<? extends BaseEntity> entityClass,String key,long expireSeconds,Callable<T> dataCaller)
//生成的缓存key为:UserEntity.findByStatus:2
EntityCacheHelper.queryTryCache(UserEntity.class, "findByStatus:2", new Callable<List<UserEntity>>() {
public List<UserEntity> call() throws Exception {
//查询语句
List<UserEntity> entitys = mapper.findByStatus((short)2);
return entitys;
}
});
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。