在SpringBoot集成MyBatis环境中,使用mybatis-plus-boot-starter完成自动配置,不再使用mybatis-config.xml。
在SpringBoot环境中不使用mybatis-plus-boot-starter情况下,可以使用mybatis-config.xml配置文件配置MyBatis。
db.properties
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://127.0.0.1:3306/test?characterEncoding=UTF8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai jdbc.username=root jdbc.password=rootmybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><propertiesresource="db.properties"></properties><settings><!-- 打印查询语句 --><settingname="logImpl"value="STDOUT_LOGGING"/><!-- 控制全局缓存(二级缓存)--><settingname="cacheEnabled"value="true"/><!-- 延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。默认 false --><settingname="lazyLoadingEnabled"value="true"/><!-- 当开启时,任何方法的调用都会加载该对象的所有属性。默认 false,可通过select标签的 fetchType来覆盖--><settingname="aggressiveLazyLoading"value="false"/><!-- Mybatis 创建具有延迟加载能力的对象所用到的代理工具,默认JAVASSIST --><!--<setting name="proxyFactory" value="CGLIB" />--><!-- STATEMENT级别的缓存,使一级缓存,只针对当前执行的这一statement有效 --><!-- <setting name="localCacheScope" value="STATEMENT"/> --><settingname="localCacheScope"value="SESSION"/></settings><typeAliases><typeAliasalias="user"type="com.hk.eshop.entity.UserInfo"/></typeAliases><!-- <typeHandlers> <typeHandler handler="com.hk.eshop.config.MyTypeHandler"></typeHandler> </typeHandlers> --><!-- 对象工厂 --><!-- <objectFactory type="com.hk.eshop.config.MyObjectFactory"> </objectFactory> --><!-- <plugins> <plugin interceptor="com.hk.eshop.config.SQLInterceptor"> </plugin> <plugin interceptor="com.hk.eshop.config.MyPageInterceptor"> </plugin> </plugins> --><environmentsdefault="development"><environmentid="development"><transactionManagertype="JDBC"/><dataSourcetype="POOLED"><propertyname="driver"value="${jdbc.driver}"/><propertyname="url"value="${jdbc.url}"/><propertyname="username"value="${jdbc.username}"/><propertyname="password"value="${jdbc.password}"/></dataSource></environment></environments><mappers><mapperresource="classpath:com/hk/eshop/mapper/xml/UserMapper.xml"/></mappers></configuration>mybatis-plus-boot-starter自动配置
MyBatisCache.java
packagecom.hk.eshop.config;importorg.apache.ibatis.cache.Cache;importjava.util.HashMap;importjava.util.Map;publicclassMyBatisCacheimplementsCache{privatestaticMapcache=newHashMap();privateStringid=null;publicMyBatisCache(Stringid){this.id=id;System.out.println("====================="+id);}@OverridepublicStringgetId(){returnid;}@OverridepublicvoidputObject(Objecto,Objecto1){cache.put(o,o1);System.out.println("putObject====================="+o);System.out.println("putObject====================="+o1);}@OverridepublicObjectgetObject(Objecto){System.out.println("getObject====================="+o);returncache.get(0);}@OverridepublicObjectremoveObject(Objecto){returncache.remove(o);}@Overridepublicvoidclear(){cache.clear();}@OverridepublicintgetSize(){returncache.size();}}UserMapper.java
packagecom.hk.eshop.mapper;importcom.baomidou.mybatisplus.core.mapper.BaseMapper;importcom.hk.eshop.config.MyBatisCache;importcom.hk.eshop.entity.UserInfo;importorg.apache.ibatis.annotations.CacheNamespace;importorg.apache.ibatis.annotations.Mapper;importjava.util.List;@Mapper@CacheNamespace(implementation=MyBatisCache.class)publicinterfaceUserMapperextendsBaseMapper<UserInfo>{List<UserInfo>findAll();}UserCtrl.java
packagecom.hk.eshop.ctrl;importcom.hk.eshop.entity.UserInfo;importcom.hk.eshop.service.IUserService;importlombok.extern.slf4j.Slf4j;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;importjavax.servlet.http.HttpServletRequest;importjava.util.HashMap;importjava.util.List;importjava.util.Map;@RestController@RequestMapping("/user")// /user/list@Slf4jpublicclassUserCtrl{@AutowiredprivateIUserServiceuserServ;@GetMapping(value="/list")publicMaplist(UserInfouser,HttpServletRequestreq){userServ.getById("2");System.out.println("load user from cache....");userServ.getById("2");List<UserInfo>list=userServ.findAll();Mapmap=newHashMap();map.put("user",list);returnmap;}}
在生产环境可以配置成功,单元测试环境未配置成功。
MyBatis对数据字段加密脱敏有多种方式,本例使用注解对数据脱敏必须使用其他MyBatis-Starter,
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-mate-starter</artifactId><version>1.0.8</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-mate-annotation</artifactId><version>1.0.8</version></dependency>