解决方案 »
- action中使用@Service问题
- java Ajax 火狐 无法接收到,IE正常
- 在java中,我用的链接下载,但怎样才能获得下载文件的路径?
- 刚刚配置好Weblogic不知道对不对,下面报错,请高手看下?
- 注册信息闰年闰月的代码
- 急救,关于FCKeditor的问题
- 关于STRUTS问题,两者有什么不同????对于配置的struts-config.xml
- 有没有济南的朋友,有个小项目要找人作
- 请问AXIS的服务端的提供服务的那个类如何改变其中成员数据的值以供调用?
- 求教,struts2里面的表单提交-可不可以在同一个s:form标签里提交至不同的action
- 请教一个spring的addResourceHandlers(..)问题
- java最简单的调用webservice的方法
下面的这个例子里几乎都有了,可以参考一下。
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC
"-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--namespace非常重要:必须是Mapper类的全路径-->
<mapper namespace="com.tur.mapper.UserMapper">
<sql id="columns">id, age, name</sql> <!-- [[1]] 简单的JavaBean,直接使用resultType: 数据库表的列与JavaBean的属性对应 -->
<select id="selectUser" parameterType="int" resultType="User">
SELECT <include refid="columns"/>
FROM user WHERE id = #{id}
</select> <select id="selectUserByMap" parameterType="map" resultType="User">
SELECT <include refid="columns"/>
FROM user WHERE id = #{id} AND name=#{name}
</select> <select id="selectUsersByName" parameterType="string" resultType="com.tur.domain.User">
SELECT <include refid="columns"/>
FROM user WHERE name = #{name}
</select> <!-- [[2]] 可以使用resultMap映射自己的类: 例如多表查询时 -->
<select id="selectUserById" parameterType="int" resultMap="userResultMap">
SELECT <include refid="columns"/>
FROM user WHERE id = #{id}
</select> <select id="selectUserByIdWithParam" resultMap="userResultMap">
SELECT <include refid="columns"/>
FROM user WHERE id = #{id} limit #{offset},#{size}
</select> <resultMap id="userResultMap" type="com.tur.domain.User">
<id property="id" column="id"/>
<result property="age" column="age"/>
<result property="name" column="name"/>
</resultMap>
<!-- [[3]] 使用resultMap映射,属性是另一个类的对象 -->
<select id="selectFullUserById" parameterType="int" resultMap="userAssociationResultMap">
SELECT
user.id as user_id, <!-- 重命名列非常有用 -->
user.age as user_age,
user.name as user_name,
ui.id as user_info_id,
ui.user_id as user_info_user_id,
ui.telephone as user_info_telephone,
ui.address as user_info_address
<!--FROM user, user_info ui-->
FROM user
LEFT JOIN user_info ui ON user.id=ui.user_id
WHERE user.id=#{id}
<!--AND user.id=ui.user_id-->
</select>
<resultMap id="userAssociationResultMap" type="com.tur.domain.User">
<id property="id" column="user_id"/>
<result property="age" column="user_age"/>
<result property="name" column="user_name"/>
<!--嵌套映射中还可以使用resultMap: association, collection
还可以使用嵌套查询,但是会产生N+1问题,在大数量的数据库里会有很大的性能问题-->
<!--<association property="userInfo" column="user_info_id" javaType="domain.UserInfo">
<id property="id" column="user_info_id"/>
<result property="userId" column="user_info_user_id"/>
<result property="telephone" column="user_info_telephone"/>
<result property="address" column="user_info_address"/>
</association>-->
<!--association是一对一关系,collection是一对多关系-->
<!--使用columnPrefix可以使result map重用-->
<!--column用在嵌套查询的时候有用,下面的嵌套结果resultMap情形可以不用-->
<association property="userInfo" column="user_info_id" columnPrefix="user_info_" resultMap="userInfoResultMap"/>
</resultMap>
<resultMap id="userInfoResultMap" type="com.tur.domain.UserInfo">
<id property="id" column="id"/>
<result property="userId" column="user_id"/>
<result property="telephone" column="telephone"/>
<result property="address" column="address"/>
</resultMap> <select id="selectUsersWithNames" parameterType="list" resultType="com.tur.domain.User">
SELECT <include refid="columns"/>
FROM user
WHERE name in
<foreach item="item" index="index" open="(" separator="," close=")" collection="list">
#{item}
</foreach>
</select>
</mapper>
非常谢谢你回复这么多,不过我用的是ibatis里面没有collections 、association 这里元素resultMap里面只有一个result和discriminator