Mybatis在使用过程中需要三个东西,每张表对应一个XXMapper.java接口文件,每张表对应一个XXMapper.xml文件,每张表对应一个Entity的Java文件。 其中XXMapper.xml把XXMapper.java接口文件、Entity的Java文件 结合起来
在配置过程中:
sqlSessionFactoryBeanName
属性
这个属性一般都用不到,只有当你配置多数据源的时候,这是会有多个sqlSessionFactory
,你就需要通过该属性来指定哪一个sqlSessionFactory
(值为SqlSessionFactoryBean
<bean>
配置中的id
属性)。
由于通用Mapper依赖JPA,所以还需要下载persistence-api-1.0.jar:
http://repo1.maven.org/maven2/javax/persistence/persistence-api/1.0/
MyBatis通用Mapper3
通用Mapper都可以极大的方便开发人员。可以随意的按照自己的需要选择通用方法,还可以很方便的开发自己的通用方法。
极其方便的使用MyBatis单表的增删改查。
支持单表操作,不支持通用的多表联合查询。
通用 Mapper 支持 Mybatis-3.2.4 及以上版本
特别强调
不是表中字段的属性必须加 @Transient 注解
通用 Mapper 不支持 devtools 热加载,devtools 排除实体类包即可,
配置方式参考:using-boot-devtools-customizing-classload(http://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-devtools.html#using-boot-devtools-customizing-classload)
看本文之前,请确保你已经在SpringBoot中集成MyBatis,并能正常使用。
Spring DevTools 配置
感谢emf1002提供的解决方案。
在使用 DevTools 时,通用Mapper经常会出现 class x.x.A cannot be cast to
同一个类如果使用了不同的类加载器,就会产生这样的错误,所以解决方案就是让通用Mapper和实体类使用相同的类加载器即可。
DevTools 默认会对 IDE 中引入的所有项目使用 restart 类加载器,对于引入的 jar 包使用 base 类加载器,因此只要保证通用Mapper的jar包使用 restart 类加载器即可。
在 src/main/resources 中创建 META-INF 目录,在此目录下添加 spring-devtools.properties 配置,内容如下:
restart.include.mapper=/mapper-[\\w-\\.]+jar
restart.include.pagehelper=/pagehelper-[\\w-\\.]+jar
使用这个配置后,就会使用 restart 类加载加载 include 进去的 jar 包。
如果没有,那么请先移步做了解后,再按本文步骤操作。
使用MyBatis在我们通过xml集中配置SQL,并通过创建接口Mapper文件来完成持久化DAO层(mybatis内部使用的是动态代理,所以我们不需要自己编写实现类)。
然而在实际开发中,单表操作非常多,如果你也想像JPA、JDBC那样做一个所谓的BaseDao。那么可以实现一个通用Mapper来达到目的。
现在有现成的通用Mapper插件,我们无需重新创造轮子(代码是开源的,你也可以自己在其基础上修改)。