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'))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 ->.... def myHello(def args){ return sqlMapper.selectOne("selectDirectory",args); }