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的全部內容,希望文章能夠幫你解決所遇到的問題。