电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術(shù)文章
文章詳情頁

Mybatis中多個(gè)對象包含同一個(gè)對象的處理操作

瀏覽:110日期:2023-10-19 08:51:21
多個(gè)對象對應(yīng)一個(gè)對象時(shí),應(yīng)該如何進(jìn)行查詢?

例如

關(guān)鍵字:association : 聯(lián)系 ,關(guān)聯(lián) 多個(gè)人可以關(guān)聯(lián)一個(gè)人。

首先做一些準(zhǔn)備,如:實(shí)體類,工具類和Mybatis核心文件

實(shí)體類:

//老師實(shí)體類package com.MLXH.pojo;public class Teacher { private int id; private String name; public Teacher() { } public Teacher(int id, String name) {this.id = id;this.name = name; } public int getId() {return id; } public void setId(int id) {this.id = id; } public String getName() {return name; } public void setName(String name) {this.name = name; } @Override public String toString() {return 'Teacher{' +'id=' + id +', name=’' + name + ’’’ +’}’; }}

//學(xué)生實(shí)體類package com.MLXH.pojo;public class Student { private int id; private String name; private Teacher teacher; public Student() { } public Student(int id, String name, Teacher teacher) {this.id = id;this.name = name;this.teacher = teacher; } public int getId() {return id; } public void setId(int id) {this.id = id; } public String getName() {return name; } public void setName(String name) {this.name = name; } public Teacher getTeacher() {return teacher; } public void setTeacher(Teacher teacher) {this.teacher = teacher; } @Override public String toString() {return 'Student{' +'id=' + id +', name=’' + name + ’’’ +', teacher=' + teacher +’}’; }}

database.properties配置文件數(shù)據(jù)庫需要的數(shù)據(jù)

driver = com.mysql.jdbc.Driverurl = jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=utf-8username = rootpassword = 123456

Mybatis工具類:mybatis-config.xml

<?xml version='1.0' encoding='UTF-8' ?><!DOCTYPE configurationPUBLIC '-//mybatis.org//DTD Config 3.0//EN''http://mybatis.org/dtd/mybatis-3-config.dtd'><configuration> <!--配置文件修改--> <properties resource='database.properties'/> <!--Mybatis設(shè)置--> <settings><!--默認(rèn)日志實(shí)現(xiàn)--><!--<setting name='logImpl' value='STDOUT_LOGGING'/>--><!--Log4j實(shí)現(xiàn)--><setting name='logImpl' value='LOG4J'/> </settings> <!--配置別名--> <typeAliases><package name='com.MLXH.pojo'/> </typeAliases> <environments default='development'><environment id='development'> <transactionManager type='JDBC'/> <dataSource type='POOLED'><property name='driver' value='${driver}'/><property name='url' value='${url}'/><property name='username' value='${username}'/><property name='password' value='${password}'/> </dataSource></environment> </environments> <mappers><!--class對應(yīng)的是一個(gè)接口類--><!--resource對應(yīng)的是一個(gè)接口類的映射文件--><mapper resource='com/MLXH/dao/StudentMapper.xml'/> </mappers></configuration>

工具類:主要是為了使獲得sqlsession更為簡單方便

package com.MLXH.utils;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 java.io.IOException;import java.io.InputStream;//mybatis的工具類,重復(fù)的代碼的提純public class MyBatisUtils { //類變量不需要設(shè)置默認(rèn)值; private static SqlSessionFactory sqlSessionFactory; static {//在maven中,所有的資源文件一般都放在resources目錄下,我們可以直接拿到。try { String resource = 'mybatis-config.xml'; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);} catch (IOException e) { e.printStackTrace();} } //設(shè)置SqlSessionFactory公共的方法 public static SqlSessionFactory getSqlSessionFactory(){return sqlSessionFactory; } //獲得一個(gè)帶事務(wù)自動(dòng)提交功能的SqlSession公共的方法 public static SqlSession getSqlSession(){//自動(dòng)提交事務(wù)return sqlSessionFactory.openSession(true); }}

StudentDao接口

package com.MLXH.dao;import com.MLXH.pojo.Student;import java.util.List;public interface StudentDao { //獲得全部學(xué)生的信息以及對應(yīng)的老師 List<Student> getStudents(); //獲得全部學(xué)生的信息以及對應(yīng)的老師 List<Student> getStudentsTwo();}

針對于StudentDao接口的實(shí)現(xiàn)mapper文件:我們使用如下的方式來進(jìn)行查詢

1.模擬數(shù)據(jù)庫思想:連表查詢

StudentMapper.xml

<?xml version='1.0' encoding='UTF-8' ?><!DOCTYPE mapperPUBLIC '-//mybatis.org//DTD Mapper 3.0//EN''http://mybatis.org/dtd/mybatis-3-mapper.dtd'><!--namespace不能寫別名--><mapper namespace='com.MLXH.dao.StudentDao'> <!--遇到問題:學(xué)生類中關(guān)聯(lián)老師: 多個(gè)學(xué)生對應(yīng)一個(gè)老師 --><!--解決問題方式一:按查詢結(jié)果嵌套處理,模擬數(shù)據(jù)庫思想;--> <select resultMap='StudentTeacher'>select * from mybatis.student </select> <resultMap type='Student'><id column='id' property='id'/><result column='name' property='name'/><!--屬性和字段對應(yīng) , 類和表對應(yīng) , 對象和記錄關(guān)聯(lián)一個(gè)字段需求:拿到老師這個(gè)類的屬性association : 關(guān)聯(lián),多對一 column : 數(shù)據(jù)庫對應(yīng)的列名 property : 對應(yīng)屬性名 javaType : 多對一字段對應(yīng)的Java類型 select : 關(guān)聯(lián)一個(gè)語句--><association column='tid' property='teacher' javaType='Teacher' select='getTeacher'/> </resultMap> <select resultType='Teacher'>select * from mybatis.teacher where id = #{id} </select></mapper>

測試類

@Test public void getStudents(){SqlSession sqlSession = MyBatisUtils.getSqlSession();StudentDao mapper = sqlSession.getMapper(StudentDao.class);List<Student> students = mapper.getStudents();for (Student student : students) { System.out.println('學(xué)生姓名:'+student.getName()+'t老師姓名:'+student.getTeacher().getName());} }2.模擬面向?qū)ο蟮乃枷?p><?xml version='1.0' encoding='UTF-8' ?><!DOCTYPE mapperPUBLIC '-//mybatis.org//DTD Mapper 3.0//EN''http://mybatis.org/dtd/mybatis-3-mapper.dtd'><!--namespace不能寫別名!!!!!--><mapper namespace='com.MLXH.dao.StudentDao'> <!-- 解決方式二:一個(gè)resultMap解決 , 模擬面向?qū)ο蟮乃枷?-> <select resultMap='StudentTeacher2'>select s.id,s.name,t.id as tid,t.name as tnamefrom mybatis.student as s, mybatis.teacher as twhere s.tid = t.id </select> <!--設(shè)置結(jié)果集映射ResultMap --> <resultMap type='Student'><id property='id' column='id'/><result property='name' column='name'/><!--直接關(guān)聯(lián)一個(gè)老師--><association property='teacher' javaType='Teacher'> <id property='id' column='tid'/> <result property='name' column='tname'/></association> </resultMap></mapper>

測試

@Testpublic void getStudentsTwo(){ SqlSession sqlSession = MyBatisUtils.getSqlSession(); StudentDao mapper = sqlSession.getMapper(StudentDao.class); List<Student> students = mapper.getStudentsTwo(); for (Student student : students) {System.out.println('學(xué)生姓名:'+student.getName()+'t老師姓名:'+student.getTeacher().getName()); }}

Mybatis中多個(gè)對象包含同一個(gè)對象的處理操作

總結(jié):

mybatis中遇到多對一的情況,要使用關(guān)聯(lián)映射處理:使用association

兩種處理思路:

數(shù)據(jù)庫思想 : 聯(lián)表查詢 OOP思想 :關(guān)聯(lián)對象Mybatis同時(shí)傳入多個(gè)對象及普通參數(shù)

當(dāng)傳入多個(gè)文件時(shí),mapper接口文件的方法參數(shù)要使用@param(“xx”)注釋。

例子:

mapper:

//Student是對象,age是String類型。int getPojo(@param('student') Student student, @param('age') String age );

xml:

<select resultMap='BaseResultMap'> select <include refid='Base_Column_List' /> from student where 1 = 1 <!-- 使用參數(shù)一(是個(gè)自己的對象) --> <if test='student.id != null'>and id = #{student.id} </if> <!-- 使用參數(shù)二 String類型 --> <if test='age!= null'>and age = #{age} </if></select>

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Mybatis 數(shù)據(jù)庫
相關(guān)文章:
主站蜘蛛池模板: 医用酒精_84消毒液_碘伏消毒液等医用消毒液-漓峰消毒官网 | 卷筒电缆-拖链电缆-特种柔性扁平电缆定制厂家「上海缆胜」 | 综合管廊模具_生态,阶梯护坡模具_检查井模具制造-致宏模具厂家 | 京马网,京马建站,网站定制,营销型网站建设,东莞建站,东莞网站建设-首页-京马网 | POS机官网 - 拉卡拉POS机免费办理|官网在线申请入口 | 无机纤维喷涂棉-喷涂棉施工工程-山东华泉建筑工程有限公司▲ | 包头市鑫枫装饰有限公司 | 斗式提升机_链式斗提机_带式斗提机厂家无锡市鸿诚输送机械有限公司 | 玖容气动液压设备有限公司-气液增压缸_压力机_增压机_铆接机_增压器 | OLChemim试剂-ABsciex耗材-广州市自力色谱科仪有限公司 | vr安全体验馆|交通安全|工地安全|禁毒|消防|安全教育体验馆|安全体验教室-贝森德(深圳)科技 | 流程管理|流程管理软件|企业流程管理|微宏科技-AlphaFlow_流程管理系统软件服务商 | 称重传感器,测力传感器,拉压力传感器,压力变送器,扭矩传感器,南京凯基特电气有限公司 | 北京网站建设|北京网站开发|北京网站设计|高端做网站公司 | EPK超声波测厚仪,德国EPK测厚仪维修-上海树信仪器仪表有限公司 | 中开泵,中开泵厂家,双吸中开泵-山东博二泵业有限公司 | 世界箱包品牌十大排名,女包小众轻奢品牌推荐200元左右,男包十大奢侈品牌排行榜双肩,学生拉杆箱什么品牌好质量好 - Gouwu3.com | 三氯异氰尿酸-二氯-三氯-二氯异氰尿酸钠-优氯净-强氯精-消毒片-济南中北_优氯净厂家 | 西安标准厂房_陕西工业厂房_西咸新区独栋厂房_长信科技产业园官方网站 | 扬尘监测_扬尘监测系统_带证扬尘监测设备 - 郑州港迪科技有限公司 | 北京公积金代办/租房发票/租房备案-北京金鼎源公积金提取服务中心 | 衬塑管道_衬四氟管道厂家-淄博恒固化工设备有限公司 | 青州开防盗门锁-配汽车芯片钥匙-保险箱钥匙-吉祥修锁店 | 优考试_免费在线考试系统_培训考试系统_题库系统_组卷答题系统_匡优考试 | 电缆隧道在线监测-智慧配电站房-升压站在线监测-江苏久创电气科技有限公司 | 宿松新闻网 宿松网|宿松在线|宿松门户|安徽宿松(直管县)|宿松新闻综合网站|宿松官方新闻发布 | 阴离子聚丙烯酰胺价格_PAM_高分子聚丙烯酰胺厂家-河南泰航净水材料有限公司 | 抓斗式清污机|螺杆式|卷扬式启闭机|底轴驱动钢坝|污水处理闸门-方源水利机械 | 胶泥瓷砖胶,轻质粉刷石膏,嵌缝石膏厂家,腻子粉批发,永康家德兴,永康市家德兴建材厂 | 蓝米云-专注于高性价比香港/美国VPS云服务器及海外公益型免费虚拟主机 | 广州工业氧气-工业氩气-工业氮气-二氧化碳-广州市番禺区得力气体经营部 | 柴油机_柴油发电机_厂家_品牌-江苏卡得城仕发动机有限公司 | 广西教师资格网-广西教师资格证考试网 | 雷蒙磨,雷蒙磨粉机,雷蒙磨机 - 巩义市大峪沟高峰机械厂 | 挤出熔体泵_高温熔体泵_熔体出料泵_郑州海科熔体泵有限公司 | 东莞螺杆空压机_永磁变频空压机_节能空压机_空压机工厂批发_深圳螺杆空压机_广州螺杆空压机_东莞空压机_空压机批发_东莞空压机工厂批发_东莞市文颖设备科技有限公司 | 实战IT培训机构_IT培训班选大学生IT技术培训中心_中公优就业 | 行星搅拌机,双行星搅拌机,动力混合机,无锡米克斯行星搅拌机生产厂家 | 杭州月嫂技术培训服务公司-催乳师培训中心报名费用-产后康复师培训机构-杭州优贝姆健康管理有限公司 | 英超直播_英超免费在线高清直播_英超视频在线观看无插件-24直播网 | 气弹簧定制-气动杆-可控气弹簧-不锈钢阻尼器-工业气弹簧-可调节气弹簧厂家-常州巨腾气弹簧供应商 |