在ibatis的sqlMap.xml文件里是可以配置返回类型的,通常是resultMap或者resultClass.
因为有特殊需求要求达到配置文件里配置是个自定类型,而在特殊情况下要求返回类型为int(需求总比较怪异)所以请教各位大侠有没有方法在代码里改配置文件里的返回类型。
因为有特殊需求要求达到配置文件里配置是个自定类型,而在特殊情况下要求返回类型为int(需求总比较怪异)所以请教各位大侠有没有方法在代码里改配置文件里的返回类型。
解决方案 »
- 关于tomcat在服务器上配置ip地址访问的问题
- 用ie8打开jsp页面会自动重启浏览器。其他浏览器都没问题。
- 向大家请教,如果页面表单使用GET,为什么servlet里必须有doGet()?否则会报错。就算我不覆盖,doget()也只是应该什么也不做
- 重定向问题,请大家帮忙看看
- 取2位小数,如何做
- 如何在Eclipse引用jspSmartUpload.jar??
- 求帮忙写一个数字即时加减的功能并用POST发送
- 没有人会在JSP中使用未打成包的类吗?
- bean编译问题:bean A连接数据库,bean B进行一些操作,A编译正常,B编译时报找不到A中的类。?????
- 想大家求教:在jsp中画直线怎么画?
- ${}里的pageContext与<% %>的pageContext区别
- configure build path
LZ可以试试
我之前看到了这个方法,参数是个int类型的。
我试试看。 多谢回复。另外:我已经写类继承了ibatis的SqlExecutor。
我想应该是可以在RequestScope 对象里找这个东西。 还在找
所以第一步查出来,所的记录数。返回Int类型。
第二步查出需要的记录。返回自定义对象 。而这两步操作要求只能在配置文件里写一个SQL。
所以会先从配置文件里读出SQL来,拼接好了再执行(一个查询记录数,一个查询记录)。
因为只能写一个SQL,这个返回类型就搞不定了。
我用的确实是ibatis 。 不是mybatis
我是看到ibatis的requestCope对象里有getStatement().getResultSetType() 方法。
但没得设置方法。
DAO层 queryForObject()
强制转换一下 即可
多谢答复
但问题是需要配置文件里是resultMap。
返回结果要为int。
我现在必须用ibatis需求是配置文件里配置是个自定类型(这个不能动),而要求能成功返回的int类型的数据(需求总比较怪异)所以请教各位大侠有没有方法在后台代码里改配置文件里的返回类型。
</select>
这个是我们项目中用的 你要返回int 那么你就需要在你的dao中装箱为Integer既可。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap
PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
"http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="Area">
<!-- 映射对应实体 -->
<typeAlias alias="area" type="com.pojo.Area"/>
<!-- 配置实体属性 -->
<resultMap class="area" id="areafoResult">
<result property="area_id" column="AREA_ID" javaType="java.lang.Integer" jdbcType="int"/>
<result property="area_name" column="AREA_NAME" javaType="java.lang.String" jdbcType="nvarchar"/>
</resultMap>
<resultMap class="area" id="areafoResults">
<result property="area_id" column="AREA_ID" javaType="java.lang.Integer" jdbcType="int"/>
<result property="area_name" column="AREA_NAME" javaType="java.lang.String" jdbcType="nvarchar"/>
<result property="regions" column="AREA_ID" javaType="java.lang.String" jdbcType="nvarchar" select="Region.findRegionByAreaId"/>
</resultMap>
<!-- 查询全部 -->
<select id="findAreaAll" resultMap="areafoResult">
<![CDATA[SELECT * FROM POS_SN_AREA]]>
</select>
<!-- 查询全部数量 -->
<select id="findAreaCount" resultClass="java.lang.Object" parameterClass="java.lang.String">
<![CDATA[SELECT COUNT([AREA_ID]) FROM POS_SN_AREA WHERE 1=1 $value$]]>
</select>
<!-- 查询全部 -->
<select id="findAreaByCondition" resultMap="areafoResult" parameterClass="com.aisino.snpos.ben.util.PageBean">
<![CDATA[SELECT TOP $pageSize$ * FROM POS_SN_AREA WHERE [AREA_ID] NOT IN
(SELECT TOP (($currPage$-1)*$pageSize$) [AREA_ID] FROM POS_SN_AREA WHERE 1=1 $condition$)
$condition$]]>
</select>
<!-- 片区名称是否存在 -->
<select id="isExistsAreaName" resultClass="java.lang.Object" parameterClass="java.lang.String">
<![CDATA[SELECT COUNT(1) FROM POS_SN_AREA WHERE [AREA_NAME] = #value#]]>
</select>
<!-- 删除 -->
<delete id="deleteAreaById" parameterClass="java.lang.String">
<![CDATA[DELETE FROM POS_SN_AREA WHERE [AREA_ID]=#value#]]>
</delete>
<!-- 新增 -->
<statement id="addArea" parameterClass="com.aisino.snpos.ben.pojo.Area" resultClass="java.lang.Object">
<![CDATA[INSERT INTO POS_SN_AREA([AREA_NAME])
VALUES(#area_name#);SELECT @@IDENTITY;]]>
</statement>
<!-- 修改 -->
<update id="modifyAreaById" parameterClass="com.aisino.snpos.ben.pojo.Area">
<![CDATA[UPDATE POS_SN_AREA SET [AREA_NAME]=#area_name# WHERE [AREA_ID]=#area_id#]]>
</update>
<!-- 按ID查询 -->
<select id="findAreaByAreaId" resultMap="areafoResult" parameterClass="java.lang.String">
<![CDATA[SELECT * FROM POS_SN_AREA WHERE [AREA_ID] = #value#]]>
</select>
<!-- 删除 -->
<statement id="truncateArea">
<![CDATA[TRUNCATE TABLE [POS_SN_AREA]]]>
</statement>
<!-- 按AREA_NAME查询 -->
<select id="findAreaByAreaName" resultMap="areafoResult" parameterClass="java.lang.String">
<![CDATA[SELECT * FROM POS_SN_AREA WHERE [AREA_NAME] = #value#]]>
</select>
</sqlMap>
<result property="id" column="channelId" />
</resultMap>这样到DAO层 queryForObject或者 queryForlist
取对象属性即可
<typeAlias alias="yearStatModel" type="com.xx.ydjw.statistics.model.YearStatModel" />
<select id="queryYearStatCount" parameterClass="yearStatModel" resultClass="Integer">
比如一个页面查询,业务开发员只写一个SQL(select * from user)
需要我们提供一个方法,接收页码,每页记录数,SQL_ID三个参数。
1.根据SQL_ID 找到 select * from user SQL语句。
2.在select * from user 基础上做拼接操作,使得拼接后的SQL能得能查到所有记录数。
3.根据所有记录数,页码,每页记录数。在 select * from user 基础上做拼接操作,使得拼接后SQL能查到需要的记录。问题:
在业务人员只写一个SQL的情况下,这个返回类型要同时能支持返回记录数和具体记录(pojo)两种类型,不好配置。解决办法:
自己在方法里重写一个查询方法让其返回记录数。这个查询方法的返回类型就是int。
业务人员定义的返回类型为pojo就行了。