IBatis初体验2
继上一篇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相关推荐
- JavaWeb进阶之路:MyBatis初体验
JavaWeb进阶之路:MyBatis初体验 1. 简介 1.1 什么是MyBatis MyBatis 是一款优秀的持久层框架. 它支持自定义 SQL.存储过程以及高级映射. MyBatis 免除了几 ...
- 苹果电脑安装python3密码_mac系统安装Python3初体验
前沿 对于iOS开发不要随便拆卸系统自带的Python,因为有很多 library 还是使用 Python2.7. 1 安装Xcode 1.1 App Store 搜索Xcode 并安装 1.2 安装 ...
- MapReduce编程初体验
需求:在给定的文本文件中统计输出每一个单词出现的总次数 第一步: 准备一个aaa.txt文本文档 第二步: 在文本文档中随便写入一些测试数据,这里我写入的是 hello,world,hadoop he ...
- 小程序 缩放_缩放流星应用程序的初体验
小程序 缩放 by Elie Steinbock 埃莉·斯坦博克(Elie Steinbock) 缩放流星应用程序的初体验 (First Experiences Scaling a Meteor Ap ...
- wxWidgets刚開始学习的人导引(3)——wxWidgets应用程序初体验
wxWidgets刚開始学习的人导引全文件夹 PDF版及附件下载 1 前言 2 下载.安装wxWidgets 3 wxWidgets应用程序初体验 4 wxWidgets学习资料及利用方法指导 5 ...
- 用鸿蒙跑了个 “hello world”!鸿蒙开发初体验
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源 | https://my.oschina.net/u ...
- Windows Embedded Standard开发初体验(二)
支持Silverlight的Windows Embedded Standard 好了,完成安装之后,我们就可以来做Windows Embedded Standard的第一个操作系统镜像了.在开始菜单中 ...
- 深度探索Hyperledger技术与应用之超级账本初体验(附部署代码)
2019独角兽企业重金招聘Python工程师标准>>> 本章零基础地介绍了如何快速体验超级账本搭建的区块链网络,我们先绕过了比较复杂的初始化配置,用官方提供的fabric-sampl ...
- Spring环境搭建,IoC容器初体验~
由于最近的任务是关于IoC配置文件格式的转换,所以需要从Spring的IoC容器开始学起,今天根据网上的介绍搭建了Spring环境,并对其IoC容器进行了初体验.文章中涉及到的软件以及推荐的一本关于S ...
最新文章
- 如何修改hosts文件?
- Let's Encrypt 免费通配符 SSL 证书申请教程——但是也需要email,域名所有权等,如果是黑产用的话会这样用吗?会不会暴露自己身份???...
- 8.1 A Bayesian Methodology for Systemic Risk Assessment in Financial Networks(3)
- ]remove-duplicates-from-sorted-list-ii (删除)
- VS2010 + QT 5 +open inventor 环境配置
- 两台服务器建立信任关系(root,普通用户)
- Ubuntu 13.10/12.10/12.04 用户如何升级到 Ubuntu 14.04
- 2006年四种思路帮你创业
- Flask redirect
- 2012总结--第5篇--人脉篇
- 访问win10的远程桌面(Remote Desktop)总是凭据或者用户密码错误
- WordPress仿站实战教程
- Oracle中NB的中文处理
- pdf拆分成一页一页,pdf拆分方法
- android8.1如何升级,关于android8.1实现多个app升级时的注意事项
- 织梦dedecms蓝色商务学院职业技术学校网站模板
- easyboot的一个严重不足
- Win10代理自动打开无法永久关闭的问题排查和如何解决
- Vulkan_Shader_Day01—光照(物体颜色)
- 卖货文案不会写?试试这5个方法(二)
热门文章
- 关于vue项目中输入框无法正常输入的问题
- linux 监控进程是否存在并重启进程、打印进程日志
- Python ndarray.strides用法
- php中怎么定义page,css @page的使用与定义详解
- HTML学习04之内联框架和表单
- 统计学cv值是什么意思_电源的回馈控制回路有什么作用?
- 【多线程】阻塞队列的C++多线程 实现 BlockingQueue
- Java虚拟机学习(4):JDK可视化监控工具
- Java 理论与实践: 垃圾收集简史
- 鸟哥的Linux私房菜(服务器)- 簡易 Cluster 架設