Mybatis 一对一 、一对多查询


<?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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值