设为首页 收藏本站
查看: 729|回复: 0

[经验分享] Mybatis 一对一 、一对多查询

[复制链接]

尚未签到

发表于 2016-11-26 06:46:27 | 显示全部楼层 |阅读模式
<?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名字必须为执行该sql的dao地址  -->  
<mapper namespace="cn.tramp.iblog.dao.IUserMapper">  
<resultMap type="cn.tramp.iblog.domain.User" id="userResultMap">
<id property="user_id" column="user_id"/>
<result property="role_id" column="role_id"/>
<result property="user_name" column="user_name"/>   
<result property="password" column="password"/>   
<result property="user_nickname" column="user_nickname"/>  
<result property="gender" column="gender"/>  
<result property="user_email" column="user_email"/>  
<result property="user_birthday" column="user_birthday"/>  
<result property="photo_path" column="photo_path"/>  
<result property="is_show_birthday" column="is_show_birthday"/>
<result property="marriage_state" column="marriage_state"/>
<result property="occupation" column="occupation"/>
<result property="live_place" column="live_place"/>
<result property="native_place" column="native_place"/>
<result property="personal_intro" column="personal_intro"/>
<result property="is_lock" column="is_lock"/>
</resultMap>
<!-- one to many 嵌套查询-->
<resultMap type="cn.tramp.iblog.domain.User" id="userBlogResultMap">
<id property="user_id" column="user_id"/>
<result property="role_id" column="role_id"/>
<result property="user_name" column="user_name"/>   
<result property="password" column="password"/>   
<result property="user_nickname" column="user_nickname"/>  
<result property="gender" column="gender"/>  
<result property="user_email" column="user_email"/>  
<result property="user_birthday" column="user_birthday"/>  
<result property="photo_path" column="photo_path"/>  
<result property="is_show_birthday" column="is_show_birthday"/>
<result property="marriage_state" column="marriage_state"/>
<result property="occupation" column="occupation"/>
<result property="live_place" column="live_place"/>
<result property="native_place" column="native_place"/>
<result property="personal_intro" column="personal_intro"/>
<result property="is_lock" column="is_lock"/>
<!-- ofType 指定集合中元素的类型 -->
<collection property="blogList" column="user_id" ofType="cn.tramp.iblog.domain.Blog">
<id property="blog_id" column="blog_id"/>
<result property="user_id" column="user_id"/>
<result property="blog_type_id" column="blog_type_id"/>   
<result property="blog_title" column="blog_title"/>   
<result property="key_words" column="key_words"/>  
<result property="blog_content" column="blog_content"/>  
<result property="post_datetime" column="post_datetime"/>  
<result property="edit_datetime" column="edit_datetime"/>  
<result property="read_times" column="read_times"/>  
<result property="comment_times" column="comment_times"/>
</collection>
</resultMap>
<!-- one to many 多条SQL-->
<resultMap type="cn.tramp.iblog.domain.User" id="userBlogResultMap1">
<id property="user_id" column="user_id"/>
<result property="role_id" column="role_id"/>
<result property="user_name" column="user_name"/>   
<result property="password" column="password"/>   
<result property="user_nickname" column="user_nickname"/>  
<result property="gender" column="gender"/>  
<result property="user_email" column="user_email"/>  
<result property="user_birthday" column="user_birthday"/>  
<result property="photo_path" column="photo_path"/>  
<result property="is_show_birthday" column="is_show_birthday"/>
<result property="marriage_state" column="marriage_state"/>
<result property="occupation" column="occupation"/>
<result property="live_place" column="live_place"/>
<result property="native_place" column="native_place"/>
<result property="personal_intro" column="personal_intro"/>
<result property="is_lock" column="is_lock"/>
<!-- ofType 指定集合中元素的类型 -->
<collection property="blogList" column="user_id" ofType="cn.tramp.iblog.domain.Blog"
select="cn.tramp.iblog.dao.IBlogMapper.queryForBlogByUserID" />
</resultMap>
<sql id="userColumns">
<![CDATA[
role_id, user_name, password
]]>
</sql>
<select id="queryForUserBlogList" parameterType="int" resultMap="userBlogResultMap">
SELECT * FROM iblog_user, iblog_blog WHERE
iblog_user.user_id=iblog_blog.user_id AND iblog_user.user_id=#{user_id}
</select>
<!-- seGeneratedKeys设置 为"true"表明要MyBatis获取由数据库自动生成的主   键;keyProperty="id"指定把获取到的主键值注入  
到User的user_id属性 -->
<insert id="insert" parameterType="cn.tramp.iblog.domain.User" useGeneratedKeys="true" keyProperty="user_id">  
INSERT INTO iblog_user(role_id,user_name,password,user_nickname,gender,user_email,
user_birthday, photo_path, is_show_birthday, marriage_state, occupation, live_place,
native_place, personal_intro, is_lock)  
VALUES(  
#{role_id},  
#{user_name},  
#{password},  
#{user_nickname},  
#{gender},  
#{user_email},  
#{user_birthday},  
#{photo_path},  
#{is_show_birthday},  
#{marriage_state},
#{occupation},  
#{live_place},  
#{native_place},
#{personal_intro},
#{is_lock}
)  
</insert>
<update id="update" parameterType="cn.tramp.iblog.domain.User">
UPDATE iblog_user SET
role_id = #{role_id},
user_name = #{user_name},
password = #{password},
user_nickname = #{user_nickname},
gender = #{gender},
user_email = #{user_email},
user_birthday = #{user_birthday},
photo_path = #{photo_path},
is_show_birthday = #{is_show_birthday},
marriage_state = #{marriage_state},
occupation = #{occupation},
live_place = #{live_place},
native_place = #{native_place},
personal_intro = #{personal_intro},
is_lock = #{is_lock}
WHERE user_id = #{user_id}
</update>
<select id="queryForObject" parameterType="int" resultType="cn.tramp.iblog.domain.User" resultMap="userBlogResultMap1">   
<![CDATA[  
SELECT * FROM iblog_user
WHERE user_id =  #{user_id}
]]>     
</select>
<select id="queryUserByEmail" parameterType="string" resultType="cn.tramp.iblog.domain.User" resultMap="userResultMap">   
<![CDATA[  
SELECT * FROM iblog_user
WHERE user_email =  #{user_email}
]]>     
</select>  
<select id="queryUserByName" parameterType="string" resultType="hashmap">
SELECT <include refid="userColumns"/>
FROM iblog_user
WHERE user_name = #{user_name}
</select>
<select id="getTotalCount" parameterType="string" resultType="int">
SELECT count(*) FROM iblog_user
<if test="columnName != null">
WHERE #{columnName} LIKE %#{value}%
</if>
</select>
<select id="queryUserByPage" parameterType="cn.tramp.iblog.utils.Page" resultType="list" resultMap="userResultMap">
SELECT * FROM iblog_user
ORDER BY user_id
LIMIT #{offset}, #{pageSize}
</select>
<delete id="delete" parameterType="int">
DELETE FROM iblog_user WHERE user_id = #{user_id}
</delete>
</mapper>  


<?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名字必须为执行该sql的dao地址  -->  
<mapper namespace="cn.tramp.iblog.dao.IBlogMapper">  
<resultMap type="cn.tramp.iblog.domain.Blog" id="blogResultMap0">
<id property="blog_id" column="blog_id"/>
<result property="user_id" column="user_id"/>
<result property="blog_type_id" column="blog_type_id"/>   
<result property="blog_title" column="blog_title"/>   
<result property="key_words" column="key_words"/>  
<result property="blog_content" column="blog_content"/>  
<result property="post_datetime" column="post_datetime"/>  
<result property="edit_datetime" column="edit_datetime"/>  
<result property="read_times" column="read_times"/>  
<result property="comment_times" column="comment_times"/>
</resultMap>
<!-- 嵌套查询 -->
<resultMap type="cn.tramp.iblog.domain.Blog" id="blogResultMap">
<id property="blog_id" column="blog_id"/>
<result property="user_id" column="user_id"/>
<result property="blog_type_id" column="blog_type_id"/>   
<result property="blog_title" column="blog_title"/>   
<result property="key_words" column="key_words"/>  
<result property="blog_content" column="blog_content"/>  
<result property="post_datetime" column="post_datetime"/>  
<result property="edit_datetime" column="edit_datetime"/>  
<result property="read_times" column="read_times"/>  
<result property="comment_times" column="comment_times"/>
<association property="user" column="user_id" javaType="cn.tramp.iblog.domain.User"
select="cn.tramp.iblog.dao.IUserMapper.queryForObject"/>
</resultMap>
<!-- one to one relation  结果集映射-->
<resultMap type="cn.tramp.iblog.domain.Blog" id="blogUserResultMap">
<id property="blog_id" column="blog_id"/>
<result property="user_id" column="user_id"/>
<result property="blog_type_id" column="blog_type_id"/>   
<result property="blog_title" column="blog_title"/>   
<result property="key_words" column="key_words"/>  
<result property="blog_content" column="blog_content"/>  
<result property="post_datetime" column="post_datetime"/>  
<result property="edit_datetime" column="edit_datetime"/>  
<result property="read_times" column="read_times"/>  
<result property="comment_times" column="comment_times"/>
<association property="user" javaType="cn.tramp.iblog.domain.User" column="user_id">
<id property="user_id" column="user_id"/>
<result property="role_id" column="role_id"/>
<result property="user_name" column="user_name"/>   
<result property="password" column="password"/>   
<result property="user_nickname" column="user_nickname"/>  
<result property="gender" column="gender"/>  
<result property="user_email" column="user_email"/>  
<result property="user_birthday" column="user_birthday"/>  
<result property="photo_path" column="photo_path"/>  
<result property="is_show_birthday" column="is_show_birthday"/>
<result property="marriage_state" column="marriage_state"/>
<result property="occupation" column="occupation"/>
<result property="live_place" column="live_place"/>
<result property="native_place" column="native_place"/>
<result property="personal_intro" column="personal_intro"/>
<result property="is_lock" column="is_lock"/>
</association>
</resultMap>
<sql id="userColumns">
<![CDATA[
role_id, user_name, password
]]>
</sql>
<select id="queryForBlogByID" parameterType="int" resultType="cn.tramp.iblog.domain.Blog" resultMap="blogUserResultMap">
SELECT * FROM iblog_blog , iblog_user WHERE iblog_blog.user_id = iblog_user.user_id AND iblog_blog.blog_id = #{blog_id}  
</select>
<!-- seGeneratedKeys设置 为"true"表明要MyBatis获取由数据库自动生成的主   键;keyProperty="id"指定把获取到的主键值注入  
到User的user_id属性 -->
<insert id="insert" parameterType="cn.tramp.iblog.domain.Blog" useGeneratedKeys="true" keyProperty="blog_id">  
INSERT INTO iblog_blog(user_id,blog_type_id,blog_title,key_words,blog_content,post_datetime,
edit_datetime, read_times, comment_times)  
VALUES(  
#{user_id},  
#{blog_type_id},  
#{blog_title},  
#{key_words},  
#{blog_content},  
#{post_datetime},  
#{edit_datetime},  
#{read_times},  
#{comment_times}  
)  
</insert>
<update id="update" parameterType="cn.tramp.iblog.domain.Blog">
UPDATE iblog_blog SET
user_id = #{user_id},
blog_type_id = #{blog_type_id},
blog_title = #{blog_title},
key_words = #{key_words},
blog_content = #{blog_content},
post_datetime = #{post_datetime},
read_times = #{read_times},
comment_times = #{comment_times}
WHERE blog_id = #{blog_id}
</update>
<select id="queryForBlog" parameterType="int" resultType="cn.tramp.iblog.domain.Blog" resultMap="blogResultMap0">   
<![CDATA[  
SELECT * FROM iblog_blog
WHERE blog_id =  #{blog_id}
]]>     
</select>
<select id="queryForBlogByUserID" parameterType="int" resultType="list" resultMap="blogResultMap0">   
<![CDATA[  
SELECT * FROM iblog_blog
WHERE user_id =  #{user_id}
]]>     
</select>
<select id="getTotalCount" parameterType="string" resultType="int">
SELECT count(*) FROM iblog_blog
<if test="params != null">
WHERE #{params} LIKE %#{params}%
</if>
</select>
<select id="queryBlogByPage" parameterType="cn.tramp.iblog.utils.Page"  resultType="list" resultMap="blogResultMap">
SELECT * FROM iblog_blog
ORDER BY user_id
LIMIT #{offset}, #{pageSize}
</select>
<delete id="delete" parameterType="int">
DELETE FROM iblog_blog WHERE blog_id = #{blog_id}
</delete>
</mapper>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-305573-1-1.html 上篇帖子: myBatis系列之三:增删改查 下篇帖子: 【mybatis】多次查询缓存的问题
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表