ibatis主子表查询

1、sql

主表

CREATE TABLE `account_group` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL COMMENT ‘公众号分组‘,
  `count` int(11) DEFAULT NULL COMMENT ‘分组下有多少公众号‘,
  `user_id` int(11) DEFAULT NULL COMMENT ‘用户id‘,
  `created_at` timestamp NULL DEFAULT NULL COMMENT ‘创建时间‘,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

字表

CREATE TABLE `wx_account` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `accountname` varchar(255) NOT NULL COMMENT ‘accountname‘,
  `account_group_id` int(11) DEFAULT NULL COMMENT ‘公众号分组id‘,
  `createTime` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

字表通过account_group_id与主表id关联
2、实体类

主表

/**
 * Domain Object. Generated by RAD automatically.
 *
 */
public class AccountGroup extends BaseModel implements Serializable {

    /**
     *
     */
    private static final long serialVersionUID = -2651997950883256833L;
    private Integer user_id;
    private String name;
    private Integer count;
    private Integer id;
    private List<WxAccount> accounts;

    public List<WxAccount> getAccounts() {
        return accounts;
    }

    public void setAccounts(List<WxAccount> accounts) {
        this.accounts = accounts;
    }

    public Integer getUser_id() {
        return user_id;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

}

子表:略

3、sql-xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap namespace="AccountGroup">
    <resultMap id="NewResultMap" class="com.xxxxx.accountGroup.model.AccountGroup">
        <result column="id" property="id" jdbcType="INTEGER" />
        <result column="name" property="name" jdbcType="VARCHAR" />
        <result column="count" property="count" jdbcType="INTEGER" />
        <result column="user_id" property="user_id" jdbcType="INTEGER" />
        <result column="created_at" property="created_at" jdbcType="VARCHAR" />
        <result column="id" property="accounts" select="getAccountByGroupId"/>
    </resultMap>
    <sql id="getAccountGroupList_body">
        <dynamic prepend="WHERE">
            <isNotNull prepend="AND" property="id"> id=#id# </isNotNull>
            <isNotNull prepend="AND" property="name"> name=#name# </isNotNull>
            <isNotNull prepend="AND" property="count"> count=#count# </isNotNull>
            <isNotNull prepend="AND" property="user_id"> user_id=#user_id# </isNotNull>
            <isNotNull prepend="AND" property="created_at"> created_at=#created_at# </isNotNull>
        </dynamic>
    </sql>

    <select id="getAccountGroupListWithAccount" parameterClass="com.xxxxx.accountGroup.model.AccountGroup" resultMap="NewResultMap">
        SELECT * FROM account_group
        <include refid="getAccountGroupList_body" />
    </select>

    <select id="getAccountByGroupId" parameterClass="int"
        resultClass="com.xxxxx.wxAccount.model.WxAccount">
        select *
        FROM wx_account
        where account_group_id = #id#
    </select>
</sqlMap>

查询结果中group实体的accounts属性会自动填充为List<account>

时间: 2024-12-31 06:17:50

ibatis主子表查询的相关文章

Nhibernate主子表查询

假如有AB两表,A为主,B为子:已知A表ID,查B表数据 ICriteria criteriaTotal = session.CreateCriteria<B>().CreateCriteria("A"); criteriaTotal.Add(Restrictions.Eq("ID", id)); 给B排序后,在通过A的ID查询B表数据 ICriteria criteria = session.CreateCriteria<B>(); cri

iBatis多表查询

<typeAlias alias="Product" type="com.shopping.entity.Product"/> <typeAlias alias="ProductType" type="com.shopping.entity.ProductType"/> <resultMap id="queryAllProduct" class="Product&qu

MyBatis学习总结(五)——实现关联表查询(转载)

孤傲苍狼 只为成功找方法,不为失败找借口! MyBatis学习总结(五)--实现关联表查询 一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系. 1 CREATE TABLE teacher( 2 t_id INT PRIMARY KEY AUTO_INCREMENT, 3 t_name VARCHAR(20) 4 ); 5 CREATE TAB

MyBatis学习总结(五)——实现关联表查询

一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系. CREATE TABLE teacher( t_id INT PRIMARY KEY AUTO_INCREMENT, t_name VARCHAR(20) ); CREATE TABLE class( c_id INT PRIMARY KEY AUTO_INCREMENT, c_name VA

MyBatis学习总结_05_实现关联表查询

一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系. 1 CREATE TABLE teacher( 2 t_id INT PRIMARY KEY AUTO_INCREMENT, 3 t_name VARCHAR(20) 4 ); 5 CREATE TABLE class( 6 c_id INT PRIMARY KEY AUTO_INCREMEN

Mybatis实现关联表查询

一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系. 1 CREATE TABLE teacher( 2 t_id INT PRIMARY KEY AUTO_INCREMENT, 3 t_name VARCHAR(20) 4 ); 5 CREATE TABLE class( 6 c_id INT PRIMARY KEY AUTO_INCREMEN

Mabitis 多表查询(一)resultType=“java.util.hashMap”

1.进行单表查询的时候,xml标签的写法如下 进行多表查询,且无确定返回类型时 xml标签写法如下: <select id="Volume" parameterType="java.util.Map" resultType="java.util.HashMap"> 因为没有对应的类型,所以返回HashMap 类型的结果.此时需要在dao中添加 java.util.HashMap 的引用.否则报错. 2.此次bug处理.另外习得从异常信

022. ASP.NET为DataSet中数据集添加关系及动态创建主子表和添加主子表关系

protected void Page_Load(object sender, EventArgs e) { string connectionString = "server=.;database=TYW;uid=sa;pwd=123.456;";// ConfigurationSettings.AppSettings["strCon"]; SqlConnection mycon = new SqlConnection(connectionString);//创建

Mybatis关联表查询_5

使用Mybatis实现关联查询,分为一对一和一对多两种情况,最后并对ResultMap进行一个简要说明. 创建表和数据 创建教师表,班级表,学生表, 假设一个老师只负责教一个班,那么老师和班级之间的关系是一对一的关系. 假设一个班级有多个学生,那么班级和学生之间的关系是一对多的关系. CREATE TABLE teacher( t_id number(5) PRIMARY KEY, t_name VARCHAR2(20) ); CREATE TABLE class( c_id number(5)