`
TRAMP_ZZY
  • 浏览: 138929 次
社区版块
存档分类
最新评论

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>  
分享到:
评论

相关推荐

    mybatis一对多的查询方法

    mybatis一对多的查询方法详解! mybatis一对多的查询方法详解! mybatis一对多的查询方法详解! mybatis一对多的查询方法详解!

    MyBatis一对一查询的代码

    本文将详细讲解如何在MyBatis中实现一对一查询,并通过实例代码来帮助理解这一概念。 首先,我们需要了解一对一关系的概念。在数据库设计中,一对一关系是指两个表中的每一条记录都唯一对应另一表中的一个记录。...

    myBatis一对一和一对多

    本主题将详细探讨在MyBatis中如何实现一对一和一对多的映射。 ### 一对一映射(One-to-One) 一对一关系通常发生在两个实体之间,例如一个用户对应一个唯一地址。在MyBatis中,可以通过`&lt;association&gt;`标签来配置...

    mybatis一对一,一对多

    当执行 `selectUser` 查询时,MyBatis 会根据 `UserResult` 映射规则,自动处理一对一和一对多的关联数据,填充对应的 `User` 实例。 了解了 `association` 和 `collection` 的基本用法后,你可以在实践中根据需求...

    mybatis 一对多

    在MyBatis框架中,"一对多"关系映射是一种常见的数据库关联操作,它表示一个实体(如用户)可以对应多个子实体(如订单)。在实际的业务场景中,例如,一个用户可能有多个订单,这就是一对一到多的关系。本教程将...

    MyBatis一对多映射

    在处理复杂的关联关系时,MyBatis的一对多映射机制显得尤为重要。一对多映射指的是一个父类实体对应多个子类实体的关系,例如一个学生可以有多个课程,一个部门可以有多名员工等。 一、一对多映射的基本概念 在...

    实现Mybatis框架中一对多关联映射的查询操作。

    本篇将详细讲解如何在Mybatis中实现一对多关联映射的查询操作。 首先,我们要明确一对多关联映射的基本概念。在这个例子中,User表(用户表)和Order_form表(订单表)之间存在1-N的关系,意味着一个用户可以有多个...

    【MyBatis学习笔记六】——MyBatis一对一,一对多,多对一,多对多.zip

    【MyBatis学习笔记六】——MyBatis一对一,一对多,多对一,多对多.zip博客地址:https://blog.csdn.net/weixin_43817709/article/details/117537580

    mybatis一对多性能优化demo

    在MyBatis中,一对多关系映射是常见的数据关联方式,它允许我们在查询一个实体对象时,同时加载与之相关联的多个子对象。然而,如果不进行优化,这种关联查询可能会导致性能问题,比如数据量大时的内存消耗、多次...

    Mybatis实现关联查询一对一和一对多实现

    Mybatis实现关联查询一对一和一对多实现,具体效果看博文 http://blog.csdn.net/evankaka/article/details/45674101

    mybatis之多对多

    5. **一对一(OneToOne)和一对多(OneToMany)嵌套映射**:在多对多关系中,常常伴随着一对一或一对多的子关系。MyBatis提供`&lt;oneToMany&gt;`和`&lt;oneToOne&gt;`标签,允许我们在映射文件中声明这些关系。 6. **级联操作...

    Mybatis实现一对一、一对多关联查询

    Mybatis实现一对一、一对多关联查询,关联查询:多个表联合查询,只查询一次,通过resultMap里面的、标签配置一对一、一对多;涉及到的一对一、一对多关系: - 班级classes、班主任teacher是一对一的关系 - 班级...

    MyBatis一对多的代码

    通过上述步骤,你就可以在MyBatis中实现一对多关系的查询了。值得注意的是,MyBatis还支持懒加载和级联加载,可以根据实际需求选择合适的方式处理子集合的加载策略。此外,优化SQL查询、合理使用缓存也是提高性能的...

    mybatis一对多小例子

    这个简单的一对多小例子展示了 MyBatis 如何优雅地处理关联查询,避免了手动编写复杂的 JOIN SQL,提高了代码的可维护性和可读性。通过 MyBatis 的映射机制,我们可以更加专注于业务逻辑,而不是数据库交互细节。

    mybatis xml 一对多

    5. **级联加载和延迟加载**:MyBatis支持懒加载(延迟加载),这意味着当第一次访问一对多关系中的子对象时,才会执行关联的查询。这可以通过在`&lt;association&gt;`标签中设置`lazyLoadingEnabled="true"`来实现。 6. *...

    Mybatis实现一对一,一对多数据插入数据实验报告.docx

    - 实现一对多查询:类似一对一查询,但在`User`类中,通过`List&lt;Order&gt;`集合获取所有关联的订单。 5. **Mybatis映射文件中的`resultMap`使用** - `resultMap`标签用于定义复杂的结果映射,它可以处理一对一、一对...

    Mybatis 一对多关联查询(两种方法)

    在Mybatis框架中,一对多关联查询是一种常见的数据操作,用于获取一个实体对象与其关联的多个子对象的数据。本文将详细解析两种实现Mybatis一对多关联查询的方法,并结合提供的文件来阐述其实现过程。 首先,我们来...

    mybatis一对多、多对多demo

    举个例子:每个人可以拥有多个银行卡(一对多)、每张银行卡只会对应一个用户(一对一)、每个人可能拥有多个不同的社会角色,每一个不同的社会角色也会对应不同的人(多对多),Mybatis作为大名鼎鼎的SSM的组成部分...

    Mybatis的一对一,一对多

    - **延迟加载**:如果开启,当首次访问一对多关系时,MyBatis会执行关联的SQL查询,而不是在初始加载时就获取所有数据。 ### 总结 MyBatis在处理一对一和一对多关系时,提供了灵活且高效的解决方案。开发者可以...

    mybatis多对多配置

    1. **关联映射(Association Mapping)**: 在MyBatis中,我们使用`&lt;association&gt;`标签来处理一对多或一对一的关系。但在这个场景下,我们关注的是多对多关系,通常会通过中间表来实现。 2. **联合映射(Collection ...

Global site tag (gtag.js) - Google Analytics