java ibatis并发访问数据库_iBATIS的多对多 数据库设计及实现

1 ﹤?xml version="1.0" encoding="UTF-8" ?﹥2 !DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"

3 "http://ibatis.apache.org/dtd/sql-map-2.dtd"﹥4

5 ﹤sqlMap namespace="teacher"﹥6 ﹤typeAlias alias="Teacher" type="com.lsm.domain.Teacher" /﹥7 ﹤typeAlias alias="Student" type="com.lsm.domain.Student" /﹥8

9 ﹤resultMap class="Teacher" id="teacherBasicResultMap"﹥10 ﹤result property="id" column="id"/﹥11 ﹤result property="name" column="name"/﹥12 ﹤result property="subject" column="subject"/﹥13 ﹤/resultMap﹥14 ﹤!--下面这个resultMap中有个students属性,这个结果映射继承自上面的结果映射15 由于有了继承,结果映射可以任意扩展--﹥16 ﹤resultMap class="Teacher" id="teacherWithTeacherResultMap" extends="teacherBasicResultMap"﹥17 ﹤result property="students" column="id" select="getStudentsByTeacherId"/﹥18 ﹤/resultMap﹥19 ﹤!-- 这个查询中使用到了上面定义的结果映射,从而决定了查询出来的Teacher中关联出相关的students,在student.xml中配置相似,不再注释。--﹥20 ﹤select id="getTeachers" resultMap="teacherWithTeacherResultMap"﹥21 ﹤!--[CDATA[22 select *from teacher23 ]]﹥24 ﹤/select﹥25

26 ﹤select id="getStudentsByTeacherId" resultClass="Student"﹥27 ﹤![CDATA[28 select s.* from student s,student_teacher st where s.id=st.studentid and st.teacherid=#value# ]]--﹥29 ﹤/select﹥30

31 ﹤/sqlMap﹥32

33 tudent.xml34

35 ﹤?xml version="1.0" encoding="UTF-8" ?﹥36 !DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"

37 "http://ibatis.apache.org/dtd/sql-map-2.dtd"﹥38

39 ﹤sqlMap namespace="student"﹥40 ﹤typeAlias alias="Student" type="com.lsm.domain.Student" /﹥41 ﹤typeAlias alias="Teacher" type="com.lsm.domain.Teacher" /﹥42

43 ﹤resultMap class="Student" id="studentBasicResultMap"﹥44 ﹤result property="id" column="id"/﹥45 ﹤result property="name" column="name"/﹥46 ﹤result property="birthday" column="birthday"/﹥47 ﹤/resultMap﹥48

49 ﹤resultMap class="Student" id="studentWithTeacherResultMap" extends="studentBasicResultMap"﹥50 ﹤result property="teachers" column="id" select="getTeachersByStudentId"/﹥51 ﹤/resultMap﹥52

53 ﹤select id="getStudents" resultMap="studentWithTeacherResultMap"﹥54 ﹤!--[CDATA[55 select *from student56 ]]﹥57 ﹤/select﹥58

59 ﹤select id="getTeachersByStudentId" resultClass="Teacher"﹥60 ﹤![CDATA[61 select t.* from teacher t,student_teacher st where t.id=st.teacherid and st.studentid=#value# ]]--﹥62 ﹤/select﹥63

64 ﹤/sqlMap﹥65

66 iBATIS的多对多映射配置7,测试67

68 packagecom.lsm.test;69

70 importjava.io.Reader;71 importjava.sql.SQLException;72 importjava.util.List;73 importcom.ibatis.common.resources.Resources;74 importcom.ibatis.sqlmap.client.SqlMapClient;75 importcom.ibatis.sqlmap.client.SqlMapClientBuilder;76 importcom.lsm.domain.Student;77 importcom.lsm.domain.Teacher;78

79 public classMany2Many80 {81

82 private static SqlMapClient sqlMapClient = null;83 static

84 {85 try

86 {87 Reader reader = Resources.getResourceAsReader("com/lsm/cfg/SqlMapConfig.xml");88 sqlMapClient =SqlMapClientBuilder.buildSqlMapClient(reader);89 }90 catch(Exception e)91 {92 e.printStackTrace();93 }94 }95 /**

96 *@paramargs97 */

98 public static voidmain(String[] args)99 {100 Many2Many m2m = newMany2Many();101 List studentlist = null;102 studentlist =m2m.getStudentInfo();103 for(int i=0;i﹤studentlist.size();i++)104 {105 Student s = newStudent();106 s =(Student) studentlist.get(i);107 System.out.println("name:"+s.getName() + "\t" + "birthday:"+s.getBirthday());108 List tlist =s.getTeachers();109 if(tlist!=null)110 {111 System.out.println("his teachers as follows:");112 {113 for(int ti=0;ti﹤tlist.size();ti++)114 {115 Teacher t = newTeacher();116 t =(Teacher) tlist.get(ti);117 System.out.println("teacher name:" +t.getName());118 }119 }120 }121 }122

123 List teacherlist = null;124 teacherlist =m2m.getTeacherInfo();125 for(int i=0;i﹤teacherlist.size();i++)126 {127 Teacher t = newTeacher();128 t =(Teacher) teacherlist.get(i);129 System.out.println("name:"+t.getName() + "\t" + "subject:" +t.getSubject());130 List slist =t.getStudents();131 if(slist!=null)132 {133 System.out.println("his students as follows:");134 for(int si=0;si﹤slist.size();si++)135 {136 Student s = newStudent();137 s =(Student) slist.get(si);138 System.out.println("student name:"+s.getName());139 }140 }141 }142 }143

144 //获取学生信息

145 publicList getStudentInfo()146 {147 List studentList = null;148 try

149 {150 System.out.println("学生信息如下:");151 studentList = sqlMapClient.queryForList("getStudents");152 }153 catch(SQLException e)154 {155 e.printStackTrace();156 }157 returnstudentList;158 }159

160 //获取老师信息161 //获取学生信息

162 publicList getTeacherInfo()163 {164 List studentList = null;165 try

166 {167 System.out.println("老师信息如下:");168 studentList = sqlMapClient.queryForList("getTeachers");169 }170 catch(SQLException e)171 {172 e.printStackTrace();173 }174 returnstudentList;175 }176

177 }178

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值