mybatis自定义SQL,当然不建议写在其自己生成的Mapper中,而是自己新建一个xml去管理自己的方法,这样好处不言而喻。
步骤如下:
1》 创建AppExternal类, 定义要返回的字段名称,就是一个实现Serializable的POJO,假设名字为AppExternal.java
2》写好SQL,在 **Mapper.xml 中定义sql语句。假设为AppExternalMapper.xml,这是对
AppMapper.xml的扩充,所以起这个名字。
..................
<mapper namespace="com.cfweb.dao.AppMapper" >
<resultMap id="ExternalResultMap" type="com.cfweb.domain.CfAppExternal" >
<id column="id" property="id" jdbcType="INTEGER" />
<result column="app_name" property="appName" jdbcType="VARCHAR" />
<result column="tem_img" property="temImg" jdbcType="VARCHAR" />
<result column="tem_color" property="temColor" jdbcType="VARCHAR" />
<result column="tem_name" property="temName" jdbcType="VARCHAR" />
<result column="max_cpu" property="maxCpu" jdbcType="INTEGER" />
</resultMap>
.............................
<select id="getCfAppsByParams" resultMap="ExternalResultMap">
SELECT a.*, t.tem_img, t.tem_color, t.tem_name FROM cf_app a, app_template t
WHERE a.template_id = t.id and a.org = #{org} and a.space = #{space}
</select>
...................
3》在AppMapper.java中添加相应的方法
List<AppExternal> getAppsByParams(@Param("org") String org, @Param("space") String space);
4》 在sqlMapConfig.xml中添加mapper
<mappers>
..................
<mapper resource="com/cfweb/mapping/AppExternalMapper.xml"/>
</mappers>
END