Mybatis collection的使用

今天学习了mybatis中的collection使用,作为记录以后使用。首先看一下javabean的结构!

public class Article

{

    private User user;

    private String name;

    private int id;

    private Date time;



public class User

{

    private int id;

    private String name;

    private List<Article> article;

用户和文章是一对多的关系!在查询用户的时候一次性直接查出用户的所有文章,虽然开发的时候一般不会使用此方法一次性查询出多的一方,但是作为学习还是有必要的!

用户配置文件为:

<?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">

<mapper namespace="user">

    <resultMap type="user" id="userMap">

        <collection property="article" column="id" ofType="article"

            select="user_selectArticle">

        </collection>

    </resultMap>

    <select id="user_selectArticle" resultType="article" parameterType="int"

        statementType="PREPARED">

        select * from article

        where user=#{id}

    </select>

    <select id="user_selectAll" resultMap="userMap" parameterType="user">

        select * from user

    </select>

    <insert id="user_save" parameterType="user">

        insert into user(name)

        values(#{name})

</insert>

</mapper>

主要要注意的为ofType为集合中元素的类型,在此例子中集合类型为Article!

最后附上数据库表结构:

插入数据后查询的结果为:

@Test

    public void testSelectAll()

    {

        User user = new User(2);

        user.setName("d");

        for (User u : service.findAll(user))

        {

            if (u.getArticle() != null)

                System.out.println(u.getArticle().size());

            System.out.println(u);

        }

    }

2

User [article=[Article [id=1, name=firstArticle, time=2013-11-3 0:00:00, user=null], Article [id=2, name=secondArticle, time=2013-11-3 0:00:00, user=null]], id=0, name=d]

0

User [article=[], id=0, name=d1]

0

User [article=[], id=0, name=d2]

0

User [article=[], id=0, name=d3]

0

User [article=[], id=0, name=testInsert]

0

User [article=[], id=0, name=testInsert]



集合数据成功查询出来!

mybatis collection的使用的更多相关文章

  1. mybatis collection 一对多关联查询,单边分页的问题总结!

    若想直接通过sql实现多级关联查询表结构得有2 个必不可少的字段:id ,parentId,levelId id:主键id, parentId:父id levelId:表示第几级(表本身关联查询的时候 ...

  2. Mybatis Collection查询集合只出现一条数据

    1.原因 如果两表联查,主表和明细表的主键都是id的话,明细表的多条只能查询出来第一条. 2.解决办法 级联查询的时候,主表和从表有一样的字段名的时候,在mysql上命令查询是没问题的.但在mybat ...

  3. MyBatis collection的两种形式——MyBatis学习笔记之九

    与association一样,collection元素也有两种形式,现介绍如下: 一.嵌套的resultMap 实际上以前的示例使用的就是这种方法,今天介绍它的另一种写法.还是以教师映射为例,修改映射 ...

  4. mybatis <collection>标签 类型为string时无法获取重复数据错误

    1.场景: fyq_share_house 表 和 fyq_sh_tag 表 两张表是一对多的关系, 一个楼盘对应多个标签,在实体类ShareHouse中使用 /** * 楼盘标签 */ privat ...

  5. mybatis collection标签和association标签(一对多,一对一)转载

    mybatis 一对一与一对多collection和association的使用   在mybatis如何进行一对一.一对多的多表查询呢?这里用一个简单的例子说明. 一.一对一 1.associati ...

  6. mybatis collection

    转自:http://blog.csdn.net/wj3319/article/details/9025349 在SQL开发过程中,动态构建In集合条件查询是比较常见的用法,在Mybatis中提供了fo ...

  7. MyBatis Collection小记—— 关联查询、递归查询、多字段关联

    经常会用到mybatis的Collection标签来做级联查询或递归查询,现通过一个伪例来简单的说明一下使用中的关键点: 首先先列出三个表,给出一个场景: 1,角色表 t_role( id,name ...

  8. mybatis collection解析以及和association的区别

    1.collection标签 说到mybatis的collection标签,我们肯定不陌生,可以通过它解决一对多的映射问题,举个例子一个用户对应多个系统权限,通过对用户表和权限表的关联查询我们可以得到 ...

  9. mybatis collection使用注意

    背景 今天我在使用collection时候,出现数据库有两条数据,但是却返回一条,在复制这条数据到四条后,依然返回一条 分析 这四条数据,数据库的每个字段值完全相同,所以估计是当成一条处理了 如果随便 ...

随机推荐

  1. Springboot:第一个Springboot程序(一)

    1.创建Springboot项目 选择创建Springboot项目: 填写项目基本信息: 选择Springboot版本以及web依赖(内嵌tomcat): 创建完成: 创建完成后 等待构建maven项 ...

  2. 解决cvc-complex-type.2.4.a: Invalid content was found starting with element

    今天用myeclipse导入 一个项目出现后出现cvc-complex-type.2.4.a: Invalid content was found starting with element 'inf ...

  3. js 一个或多个一维数组,算出元素之间相互组合的所有情况

    // 数据源 var target = { state1: ['1', '2'], state2: ['01', '02', '03'], state3: ['001','002'] } stackS ...

  4. auth权限逻辑

    下面本人为大家讲解一下如何实现auth权限, 第一步,新建Auth.php,复制下面的代码,把注释中的表都创建一下.把文件放到extend新建文件夹org放进去即可, <?php // +--- ...

  5. Test Test...

    标题: Test(一级标题) Test(二级标题) Test(三级标题) 列表: test(列表) Alpha Beta Gamma test 2 Delte Epsilon 链接: 点兔成金斐波那契 ...

  6. webug3.0靶场渗透基础Day_2(完)

    第八关: 管理员每天晚上十点上线 这题我没看懂什么意思,网上搜索到就是用bp生成一个poc让管理员点击,最简单的CSRF,这里就不多讲了,网上的教程很多. 第九关: 能不能从我到百度那边去? 构造下面 ...

  7. java之 向上转型与向下转型

    向上转型 class father { public void eat(){ System.out.println("father eat()"); } } class son e ...

  8. 【Linux常见命令】tree命令

    tree - list contents of directories in a tree-like format. tree命令用于以树状图列出目录的内容. 执行tree指令,它会列出指定目录下的所 ...

  9. 【Linux常见命令】sort命令

    sort - sort lines of text files sort命令用于将文本文件内容加以排序. sort可针对文本文件的内容,以行为单位来排序. 语法: sort [OPTION]... [ ...

  10. Omnicore RPC API中文文档

    2019独角兽企业重金招聘Python工程师标准>>> OmniCore是比特币核心的一个分支,它在比特币协议之上实现了一个新的Omni协议层,用于代币发行.众售等应用,USDT就是 ...