继上一篇IBatis初体验

上一篇介绍了基本配置和一个简单的插入(其它RUD操作也类似)

本篇主要是对于一对多和多对一的基本使用

还是Userinfo 与 Score  双向一对多关系

javaBean:

public class Userinfo {

private int id;

private String userName;

private String pwd;

private int age;
 
 private List<Score>socresList=new ArrayList<Score>();

public void setAge(int age) {
  this.age = age;
 }

public int getId() {
  return id;
 }

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

public String getUserName() {
  return userName;
 }

public void setUserName(String userName) {
  this.userName = userName;
 }

public String getPwd() {
  return pwd;
 }

public void setPwd(String pwd) {
  this.pwd = pwd;
 }

public Integer getAge() {
  return age;
 }

public void setAge(Integer age) {
  this.age = age;
 }

public List<Score> getSocresList() {
  return socresList;
 }

public void setSocresList(List<Score> socresList) {
  this.socresList = socresList;
 }
 
}

public class Score {

private int id;
 
 private int chinese;
 
 private int english;
 
 private Userinfo userinfo;
   
 public Userinfo getUserinfo() {
  return userinfo;
 }

public void setUserinfo(Userinfo userinfo) {
  this.userinfo = userinfo;
 }

public int getChinese() {
  return chinese;
 }

public void setChinese(int chinese) {
  this.chinese = chinese;
 }

public int getEnglish() {
  return english;
 }

public void setEnglish(int english) {
  this.english = english;
 }

public int getId() {
  return id;
 }

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

}

sqlmap.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd" >
<sqlMap namespace="UserInfo" >

<typeAlias alias="user" type="com.entity.Userinfo"/>
<typeAlias alias="score" type="com.entity.Score"/>

<insert id="abatorgenerated_insert" parameterClass="com.entity.Userinfo" >
     <selectKey resultClass="int" type="post" keyProperty="id" >  
           select @@IDENTITY as value  
    </selectKey>
    insert into UserInfo (userName, pwd, age)
                values (#userName:VARCHAR#, #pwd:VARCHAR#, #age:INTEGER#)
  </insert>
 
    <resultMap id="UserinfoResult" class="user" >
    <result column="id" property="id"  />
    <result column="userName" property="userName" jdbcType="VARCHAR" />
    <result column="pwd" property="pwd"  />
    <result column="age" property="age" />
    <result property="socresList"  column="id" select="getScoreByUserId"/><!-- 一对多关系体现 -->
    </resultMap>
 
   <resultMap id="s" class="score"    >
   <result property="id" column="id"/>
   <result property="chinese" column="chinese"/>
   <result property="english" column="english"/>
   <result property="userinfo" column="userId" select="getUserById"/><!-- 多对一关系体现 -->

</resultMap>
  
   <select id="getScoreByUserId" parameterClass="int"  resultMap="s">
   select * from score where userId=#id#
   </select>
  
   <select id="getUserById" resultClass="user" parameterClass="int">
   select * from userinfo where id=#userId#
   </select>
  
   <select id="getScore" resultMap="s">
   select * from score
   </select>
  
   <select id="getUserInfo" resultMap="UserinfoResult">
   select * from userinfo
   </select>
 
</sqlMap>

Test类:

List list = mapClient.queryForList("getUserInfo");//查询用户列表
   if (list.size() > 0) {
    
    //取第一个用户
    Userinfo userinfo = (Userinfo) list.get(0);
    System.out.println("用户:" + userinfo.getUserName());
    
    //取该用户的所有语文成绩
    for (Score score : userinfo.getSocresList()) {

System.out.println("语文:" + score.getChinese());
    }
   } else
    System.out.println("没有查到任何用户!");
   
   //多对一体现
   List list2=mapClient.queryForList("getScore");
   if (list2.size()>0) {
    
    Score score=(Score)list2.get(0);
    System.out.println(score.getUserinfo().getUserName()+" 的语文成绩是:"+score.getChinese());
   }
   else{
    System.out.println("无记录!");
   }

完毕!

转载于:https://www.cnblogs.com/zhangqifeng/archive/2009/06/06/1497811.html

IBatis初体验2相关推荐

  1. JavaWeb进阶之路:MyBatis初体验

    JavaWeb进阶之路:MyBatis初体验 1. 简介 1.1 什么是MyBatis MyBatis 是一款优秀的持久层框架. 它支持自定义 SQL.存储过程以及高级映射. MyBatis 免除了几 ...

  2. 苹果电脑安装python3密码_mac系统安装Python3初体验

    前沿 对于iOS开发不要随便拆卸系统自带的Python,因为有很多 library 还是使用 Python2.7. 1 安装Xcode 1.1 App Store 搜索Xcode 并安装 1.2 安装 ...

  3. MapReduce编程初体验

    需求:在给定的文本文件中统计输出每一个单词出现的总次数 第一步: 准备一个aaa.txt文本文档 第二步: 在文本文档中随便写入一些测试数据,这里我写入的是 hello,world,hadoop he ...

  4. 小程序 缩放_缩放流星应用程序的初体验

    小程序 缩放 by Elie Steinbock 埃莉·斯坦博克(Elie Steinbock) 缩放流星应用程序的初体验 (First Experiences Scaling a Meteor Ap ...

  5. wxWidgets刚開始学习的人导引(3)——wxWidgets应用程序初体验

    wxWidgets刚開始学习的人导引全文件夹   PDF版及附件下载 1 前言 2 下载.安装wxWidgets 3 wxWidgets应用程序初体验 4 wxWidgets学习资料及利用方法指导 5 ...

  6. 用鸿蒙跑了个 “hello world”!鸿蒙开发初体验

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源 | https://my.oschina.net/u ...

  7. Windows Embedded Standard开发初体验(二)

    支持Silverlight的Windows Embedded Standard 好了,完成安装之后,我们就可以来做Windows Embedded Standard的第一个操作系统镜像了.在开始菜单中 ...

  8. 深度探索Hyperledger技术与应用之超级账本初体验(附部署代码)

    2019独角兽企业重金招聘Python工程师标准>>> 本章零基础地介绍了如何快速体验超级账本搭建的区块链网络,我们先绕过了比较复杂的初始化配置,用官方提供的fabric-sampl ...

  9. Spring环境搭建,IoC容器初体验~

    由于最近的任务是关于IoC配置文件格式的转换,所以需要从Spring的IoC容器开始学起,今天根据网上的介绍搭建了Spring环境,并对其IoC容器进行了初体验.文章中涉及到的软件以及推荐的一本关于S ...

最新文章

  1. python散点图拟合曲线-python – 将曲线拟合到散点图的边界
  2. python学习书籍推荐-推荐python机器学习实践的书籍?
  3. 终于找到你!如何将前端console.log的日志保存成文件?
  4. 控制台双缓冲防闪烁--功能封装
  5. 使用sp_executesql存储过程执行动态SQL查询
  6. c语言酒店管理系统,C语言酒店管理系统.pdf
  7. gogs app.ini文件配置项说明
  8. snmp - 简单网络管理协议
  9. Google Cloud Platform
  10. 【保姆级教程】VMware+CentOS 7 配置静态IP(小名已排雷,放心跟着教程走)
  11. UI设计学校培训课程有哪些?培训学校该怎么选?
  12. 家用台式计算机硬件配置清单,家用台式电脑配置清单
  13. 用户管理和数据库安全(一)
  14. 计算机科学家 本科专业,纽芬兰纪念大学计算机科学本科专业介绍及课程设置...
  15. 《科比传》留下深刻印象的文字
  16. clipboard.js 实现动态获取内容并复制到剪切板
  17. 漫谈程序员系列:软件开发的十八般乐趣
  18. @Scheduled的使用
  19. 蒲月“登高”,临风眺望,旷视邀您共赴AI的下一个十年之约
  20. 教你修改网卡物理地址(MAC)

热门文章

  1. Matlab ANN人工神经网络 validation checks
  2. linux查看java jdk安装路径和设置环境变量
  3. 怎么计算开学第几周php,如何计算开学第几周, 要求每年通用
  4. 第一天2017/03/28
  5. MySQL的limit用法和分页查询的性能分析及优化
  6. Java 7中的Try-with-resources
  7. 深入理解Java类型信息(Class对象)与反射机制
  8. Redis复制(Replication)
  9. 上古时期的 TeX Users 都有哪些当今 TeX Users 无法想象的神级操作?
  10. java学习笔记9--内部类总结