MyBatis笔记----多表关联查询

XML

按照下面类型建立article表

Article.java

package com.ij34.model;

public class Article {
  private int articleid;
  private User user;
  private String title;
  private int userid;
  private String content;

public int getUserid() {
    return userid;
}
public void setUserid(int userid) {
    this.userid = userid;
}
public int getArticleid() {
    return articleid;
}
public void setId(int id) {
    this.articleid = id;
}
public User getUser() {
    return user;
}
public void setUser(User user) {
    this.user = user;
}
public String getTitle() {
    return title;
}
public void setTitle(String title) {
    this.title = title;
}
public String getContent() {
    return content;
}
public void setContent(String content) {
    this.content = content;
}

}

UserMapper.xml

<?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="com.ij34.mybatis.UserMapper">
  <select id="selectUser" parameterType="int" resultType="com.ij34.model.User">
    select * from users where id=#{id};
  </select>
    <update id="updateUser" keyProperty="id">
    update users set name=#{name},age=#{age} where id=#{id}
  </update>

  <insert id="insertUser" >
   insert into users(name,age)values(#{name},#{age})
  </insert>
  <delete id="deleteUser">
    delete from users where name=#{name}
  </delete>

  <resultMap type="com.ij34.model.Article" id="resultAticleList">
  <id property="articleid" column="articleid"/>
  <result property="userid" column="userid"/>
  <result property="title" column="title"/>
  <result property="content" column="content"/>
  <association property="user" javaType="com.ij34.model.User">
  <id property="id" column="id"/>
  <result property="name" column="name"/>
  <result property="age" column="age"/>
  </association>
  </resultMap>
  <select id="selectArticle" parameterType="int" resultMap="resultAticleList">
  select * from users,article
  where users.id=article.userid and users.id=#{id}
  </select>
  </mapper>

Test.java

package com.ij34.bean;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.ij34.model.*;
public class Test {
public static void main(String[] args) throws IOException {
    String resource ="com/ij34/mybatis/mybatis-config.xml";
    InputStream inputStream = Resources.getResourceAsStream(resource);
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
   SqlSession session=sqlSessionFactory.openSession();
   try {
//       User user=session.selectOne("com.ij34.mybatis.UserMapper.selectUser", 8);
//       user.setName("小小A");
//       user.setAge(24);
//       session.update("com.ij34.mybatis.UserMapper.updateUser", user);
//       session.commit();
//       System.out.println(user);
//       User user=new User();
//       user.setName("测试01");
//       user.setAge(19);
//       session.insert("com.ij34.mybatis.UserMapper.insertUser", user);
//       session.commit();
//       int user=session.delete("com.ij34.mybatis.UserMapper.deleteUser","测试01");
//       session.commit();
//       System.out.println(user);
       List<Article> articles=session.selectList("com.ij34.mybatis.UserMapper.selectArticle",1);
       for(Article article:articles){
           System.out.println(article.getArticleid()+":"+article.getTitle()+":"+article.getContent()+" "+article.getUser());
       }
//       UserMapper mapper=session.getMapper(UserMapper.class);
//       List<Article> articles=mapper.selectarticle(1);
//       for(Article article:articles){
//           System.out.println(article.getId()+":"+article.getTitle()+":"+article.getContent()+" "+article.getUser());
//       }
} finally {
    // TODO: handle finally clause
   session.close();
}
}
}

结果

有点问题 article返回id不该是0

时间: 2024-08-06 20:59:35

MyBatis笔记----多表关联查询的相关文章

ofbiz学习笔记01--多表关联查询

不管做什么项目,肯定会用到多表关联查询数据,从网络查询得知ofbiz有三种多表关联查询方法 实现一:Screem.xml 中的 section 里,加 <action>, 加 get-related 实现二:在代码中使用 DynamicViewEntity对象,加入addMemberEntity,addAlias,addViewLink,再用 find 查询 实现三:在 entity.xml 里定义 view-entity 实体对象,在查询时就查这个view的对象 1,方法没写出来,以后再补充

mybatis多表关联查询

mybatis多表关联查询 一:在一个对象(User )中建立另一个对象属性(userExtend): public class User implements Serializable{ private static final long serialVersionUID = 1L; /** ID */ private String id; /** 用户名 */ private String username; /** 登录密码 */ private String password; /**

Hibernate-多表关联查询结果的处理方法

Hibernate多表查询结果处理 (2014-07-06 20:45:40) 转载▼ 标签: hibernate 多表查询 结果集处理 分类: Java 如果我们在Hibernate中需要查询多个表的不同字段,那么如何来获取Hibernate多表查询的结果呢?有两种方式: 1. 对各个字段分别转化成对应类型,如下: Java代码: Query q = session.createQuery(" select members, classInfo.className " + "

RDIFramework.NET 中多表关联查询分页实例

RDIFramework.NET 中多表关联查询分页实例 RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,给用户和开发者最佳的.Net框架部署方案.该框架以SOA范式作为指导思想,作为异质系统整合与互操作性.分布式应用提供了可行的解决方案. 分页非常的常见,基本任何项目都会涉及到分页,这没什么好谈的,大多数我们分页对单表的分页比较多,对多表的分页我们可以通过视图来实现,当然还有其他的方式,在这儿,我以一个实例展示下使用我们的RDIFramework.NET来实现多表

MySQL多表关联查询与存储过程

1.多表关联查询 --  **************关联查询(多表查询)**************** -- 需求:查询员工及其所在部门(显示员工姓名,部门名称) -- 1.1 交叉连接查询(不推荐.产生笛卡尔乘积现象:4 * 4=16,有些是重复记录) SELECT empName,deptName FROM employee,dept; -- 需求:查询员工及其所在部门(显示员工姓名,部门名称) -- 多表查询规则:1)确定查询哪些表   2)确定查询哪些字段   3)表与表之间连接条件

图解SQL多表关联查询

图解SQL多表关联查询 网上看了篇文章关于多表连接的,感觉很好,记录下来,以便日后自己学习  内连接 左连接 右连接 全外连接

Yii2中多表关联查询(join、joinwith) with是不执行sql的

Yii2中多表关联查询(join.joinwith) 我们用实例来说明这一部分 表结构 现在有客户表.订单表.图书表.作者表, 客户表Customer (id customer_name) 订单表Order (id order_name customer_id book_id) 图书表 (id book_name author_id) 作者表 (id author_name) 模型定义 下面是这4个个模型的定义,只写出其中的关联 Customer class Customer extends \

mark---[mysql多表关联查询的优化方法]

对于一个网站来说,数据库的结构至关重要.即要利于存储(入库不阻塞),又要利于查询(查询不锁表).网站数据库优化经验是一个积累的过程.下面就对多表关联查询的优化方法,举例说明. 现在社区分享类网站很火,就拿方维购物分享网站举例说明吧.也是对二次开发方维购物分享网站的一点总结,高手可以飞过. 购物分享的关键表有:分享表.图片表.文件表.评论表.标签表.分类表等. 围绕分享的表就么多,哇,那也不少啊.当我们查看一个图片的详细信息时,就要显示以上表里的信息.显示图片所属的分类.给图片打的标签.图片的评论

SQL两表关联查询&批量修改字段值

SQL关联查询&修改字段,正确范例如下: --批量修改报告单位名称&更新时间 --tt和tp两表关联查询,将符合条件的tt表中的principal字段更新到tp表的ruperson字段 merge into nhis34.t_publicplaces tp using standard.t_organization tt on (tt.orgcode = tp.r_orgcode and tp.create_time > '2015-05-07 00:00:00') when mat