Grails中MyBatis插件的修改

Grails通过命令安装的iBATIS插件版本有些老,有些小限制,不能使用MyBATIS的Configuration.xml,建立的gateway里面的函数都是动态根据xml mapper文件自动生成的,如果想自己写,缺少SqlSession的注入
针对这些情况可以自己修改一下

1) MyBatis的很多配置功能无法全面利用,例如别名,MyBatis插件,环境信息,缓存等,要利用MyBatis的所有配置功能,添加对配置文件的支持

def doWithSpring = {
def ssfb = sqlSesssionFactoryBean(org.mybatis.spring.SqlSessionFactoryBean) {
dataSource = ref('dataSource')
mapperLocations = mappingSupport.getArtefactResourcePaths(application)
configLocation = "classpath:Configuration.xml";//new ClassPathResource("Configuration.xml"); 添加此行代码
}
sqlSessionTemplate(org.mybatis.spring.SqlSessionTemplate, ref('sqlSesssionFactoryBean'))


添加一行configLocation属性即可

2)如果想在gateway自己写函数,控制事务,修改如下:

def registerMappings(GrailsClass g, GrailsApplication application) {
log.debug("Registering mappings for class " + g)
def operationIds = [:]
def namespace
String filename = getIbatisFilename(g.fullName)
try {
def mappingXml = loadIbatisFile(filename, g)
namespace = mappingXml.@namespace.text()
operationIds = getOperationIds(mappingXml)
} catch (e) {
log.error("Failed to load iBATIS SQL map file ${filename}", e)
}
def mc = g.clazz.metaClass
mc.sqlMapper = application.mainContext.getBean('sqlSessionTemplate') //添加此行代码
operationIds.each {String opType, ids ->
ids.each {String id ->....

这里添加了sqlMapper的实例注入,你就可以在gateway中这样写代码了,剩下的就是MyBatis的东西了,没什么好说的了。

def myHello(def args){
return sqlMapper.selectOne("selectDirectory",args);
}


注意这里自定义的东西最好不要启动事务,统一在Grails 的Service里面由Spring控制就好。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值