石家庄网站公司,网站建设的公司,济南网站建设群,qq小程序开发假设: 有一些通用的sql,在整个项目中都有可能使用的到, 但是我不太想定义java接口,结合着java逻辑来实现功能, 又或者,在每一处的mapper.xml内都定义sql片段, 那么如果需要调整sql,我就需要调整好多处相同的代码. 如何后期维护方便,使用起来又简单呢?
想法: 单独创建一个mapp…假设: 有一些通用的sql,在整个项目中都有可能使用的到, 但是我不太想定义java接口,结合着java逻辑来实现功能, 又或者,在每一处的mapper.xml内都定义sql片段, 那么如果需要调整sql,我就需要调整好多处相同的代码. 如何后期维护方便,使用起来又简单呢?
想法: 单独创建一个mapper.xml文件, 只用来存放这些sql片段,没有接口的定于,接着业务中需要用到该sql片段的地方,就去引用这个外部的sql 片段即可.
定义一个全局的mapper.xml, 由于我们只有sql 片段,不需要映射Dao层接口, 所以namespase,可以随便指定一个字符串,
?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecommonSQLsql idsql1select * from 表名 where id #{id}/sqlsql idsql2!--注意再当前页面引用sql 片段不能直接写sql1 要namespase sqlid 才可以否则会报错--include refidcommonSQL.sql1//sql
/mapper在自己的业务mapper.xml 引用上面文件的sql片段
?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.xxx.xxx.xxxMapperDaoselect idquerySQL1 resultTypejava.util.HashMap parameterTypejava.util.HashMapselect * from (include refidcommonSQL.sql1/)/selectselect idquerySQL2 resultTypejava.util.HashMap parameterTypejava.util.HashMapselect * from 表名 aleft join (include refidcommonSQL.sql1!-- 如果有参数和sql片段映射不上,可以通过property 重新定义一下变量名称即可--property nameid value#{ID}/include) bon a.id b.id/select
/mapper