mybatis中mapper的扩展

用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
时间: 2024-12-28 17:02:57

mybatis中mapper的扩展的相关文章

MyBatis 中 Mapper 接口的使用原理

MyBatis 中 Mapper 接口的使用原理 MyBatis 3 推荐使用 Mapper 接口的方式来执行 xml 配置中的 SQL,用起来很方便,也很灵活.在方便之余,想了解一下这是如何实现的,之前也大致知道是通过 JDK 的动态代理做到的,但这次想知道细节. 东西越多就越复杂,所以就以一个简单的仅依赖 MyBatis 3.4.0 的 CRUD 来逐步了解 Mapper 接口的调用. 通常是通过 xml 配置文件来创建SqlSessionFactory对象,然后再获取SqlSession对

Mybatis中mapper.xml中的模糊查询

Mybatis中mapper.xml中的模糊查询 <!-- 方法一: 直接使用 % 拼接字符串 注意:此处不能写成 "%#{name}%" ,#{name}就成了字符串的一部分, 会发生这样一个异常: The error occurred while setting parameters, 应该写成: "%"#{name}"%",即#{name}是一个整体,前后加上% --> <if test="name != nul

mybatis 中mapper 的namespace有什么用

原文:http://zhidao.baidu.com/link?url=ovFuTn7-02s7Qd40BOnwHImuPxNg8tXJF3nrx1SSngNY5e0CaSP1E4C9E5J6Xv5fI9P_dTMqHeBRGOID9bk9IcY1o9h6O21l6rHRAwj_Km3 ----------------------------------------------------------------------------------------------------------

关于使用mybatis中mapper instrances,通过session另一种操作方式

1 String resource = "mybatis-config.xml"; 2 InputStream inputStream = null; 3 try { 4 // 获取SqlSessionFactory 5 inputStream = Resources.getResourceAsStream(resource); 6 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream)

关于Mybatis中Mapper是使用XML还是注解的一些思考

XML 据说可以灵活的进行注解,但是修改以后还是要重新发布程序.当然,你可以说,在Tomcat中改了,然后热加载了,不就可以了.可是一般情况下都是几台,十几台服务器.都是用发布系统,持续集成的方式部署.这点灵活性也就没什么意义了.当然,一定要说XML支持好,这点我不否认.然而在注解中支持了大部分功能,如果实在复杂一点的SQL可以使用<script>方式或者使用Provider也行. 那再说,ResultMap支持的不好,但从3.某个版本,支持使用id,这样也可以在一定程度上进行复用了. 如果再

Mybatis中Mapper代理形式开发与spring整合

1.导入jar包 2.分包 cogfig:存放配置文件 mapper:存放映射与接口 pojo:存放实体类 test:测试代码 3.编写配置文件 SqlMapConfig.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybat

Mybatis中Mapper的实现原理解析

1.Mybatis的架构 1.1 Mybatis的框架分层 1.2 MyBatis的实现原理 mybatis底层还是采用原生jdbc来对数据库进行操作的,只是通过 SqlSessionFactory,SqlSession Executor,StatementHandler,ParameterHandler,ResultHandler和TypeHandler等几个处理器封装了这些过程 执行器:Executor (update, query, flushStatements, commit, rol

MyBatis中Mapper的返回值类型

insert.update.delete语句的返回值类型 对数据库执行修改操作时,数据库会返回受影响的行数. 在MyBatis(使用版本3.4.6,早期版本不支持)中insert.update.delete语句的返回值可以是Integer.Long和Boolean.在定义Mapper接口时直接指定需要的类型即可,无需在对应的<insert><update><delete>标签中显示声明. 对应的代码在 org.apache.ibatis.binding.MapperMe

关于mybatis中mapper文件resultMap中collection的使用

collection的使用有两种resultMap和select,必须手动指定一种 1. 实体类: 1 package com.mrlu.mybatis.domain; 2 3 import java.util.List; 4 5 /** 6 * Created by stefan on 15-12-31. 7 */ 8 public class User { 9 private Integer id; 10 private String name; 11 private List<Accoun