用mbgenerator自动生成mybatis的实体和mapper(xml和接口)文件后,如果想在mapper中添加新的操作,就不方便在自动生成的文件上去改,解决办法是定义一个新的接口和新的mapper xml文件。
BlogExtMapper.java
public interface BlogExtMapper extends BlogMapper { List<Blog> selectAll(); List<Blog> selectRecent(); List<Blog> selectByYearMonth(String yearmonth); List<Blog> selectActiveBlogs(); List<Blog> selectBestBlogs(); List<BlogStatistic> groupByYearMonth(); List<Blog> selectBlogsByCategory(int categoryid); List<Blog> selectBlogsByRange(int offset); }
在新的XML定义和接口方法对应的select操作。
BlogExtMapper.xml:
<mapper namespace="com.icool.cms.data.mybatis.extend.BlogExtMapper" > <resultMap id="groupByYearMonthMap" type="com.icool.cms.data.mybatis.BlogStatistic"> <result column="c" property="count" jdbcType="INTEGER" /> <result column="y" property="year" jdbcType="VARCHAR" /> <result column="m" property="month" jdbcType="VARCHAR" /> </resultMap> <select id="selectAll" resultMap="com.icool.cms.data.mybatis.BlogMapper.ResultMapWithBLOBs"> select <include refid="com.icool.cms.data.mybatis.BlogMapper.Base_Column_List" /> , <include refid="com.icool.cms.data.mybatis.BlogMapper.Blob_Column_List" /> from BLOG order by createtime desc </select> ...
这里主要的注意点就是如何重用BlogMapper.xml中定义的一些ResultMap,其实很简单,用完整的包名即可:
com.icool.cms.data.mybatis.BlogMapper.ResultMapWithBLOBs