最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mybatis多對多關(guān)聯(lián)實(shí)戰(zhàn)教程(推薦)

 更新時(shí)間:2017年10月24日 09:08:08   作者:尋找風(fēng)口的豬  
下面小編就為大家?guī)硪黄猰ybatis多對多關(guān)聯(lián)實(shí)戰(zhàn)教程(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

MyBatis3.0 添加了association和collection標(biāo)簽專門用于對多個相關(guān)實(shí)體類數(shù)據(jù)進(jìn)行級聯(lián)查詢,但仍不支持多個相關(guān)實(shí)體類數(shù)據(jù)的級聯(lián)保存和級聯(lián)刪除操作

一、創(chuàng)建student、teacher和stu_teach_rel三張張表

DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
 `id` int(11) NOT NULL,
 `name` varchar(255) DEFAULT NULL,
 `age` int(11) DEFAULT NULL,
 `gender` varchar(255) DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `student` VALUES ('1', '劉德華', '55', '0');
INSERT INTO `student` VALUES ('2', '張惠妹', '49', '1');
INSERT INTO `student` VALUES ('3', '謝霆鋒', '35', '0');
INSERT INTO `student` VALUES ('4', '王菲', '47', '1');
INSERT INTO `student` VALUES ('5', '汪峰', '48', '0');
INSERT INTO `student` VALUES ('6', '章子怡', '36', '1');
DROP TABLE IF EXISTS `teacher`;
CREATE TABLE `teacher` (
 `id` int(11) NOT NULL,
 `name` varchar(255) DEFAULT NULL,
 `gender` varchar(255) DEFAULT NULL,
 `subject` varchar(255) DEFAULT NULL,
 `degree` varchar(255) DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `teacher` VALUES ('1', '王晶', '0', 'CHINESE', '大專');
INSERT INTO `teacher` VALUES ('2', '馮小剛', '0', 'ENGLISH', '本科');
INSERT INTO `teacher` VALUES ('3', '吳京', '0', 'MATHEMATICS', '大專');
INSERT INTO `teacher` VALUES ('4', '王倦', '1', 'MATHEMATICS', '研究生');
DROP TABLE IF EXISTS `stu_teach_rel`;
CREATE TABLE `stu_teach_rel` (
 `id` int(11) NOT NULL,
 `stu_id` int(11) NOT NULL,
 `teach_id` int(11) NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


INSERT INTO `stu_teach_rel` VALUES ('1', '1', '1');
INSERT INTO `stu_teach_rel` VALUES ('2', '2', '1');
INSERT INTO `stu_teach_rel` VALUES ('3', '1', '2');
INSERT INTO `stu_teach_rel` VALUES ('4', '2', '2');
INSERT INTO `stu_teach_rel` VALUES ('5', '2', '3');
INSERT INTO `stu_teach_rel` VALUES ('6', '3', '1');
INSERT INTO `stu_teach_rel` VALUES ('7', '3', '2');
INSERT INTO `stu_teach_rel` VALUES ('8', '1', '3');
INSERT INTO `stu_teach_rel` VALUES ('9', '4', '1');
INSERT INTO `stu_teach_rel` VALUES ('10', '4', '2');
INSERT INTO `stu_teach_rel` VALUES ('11', '5', '3');
INSERT INTO `stu_teach_rel` VALUES ('12', '5', '4');
INSERT INTO `stu_teach_rel` VALUES ('13', '6', '1');
INSERT INTO `stu_teach_rel` VALUES ('14', '6', '3');

二、新建和表相關(guān)的實(shí)體類

package com.yihaomen.mybatis.model;
import com.yihaomen.mybatis.enums.Gender;
import java.util.List;

public class Student {
 private String id;
 private String name;
 private int age;
 private Gender gender;
 private List<Teacher> teachers;

 setters&getters
 
}
package com.yihaomen.mybatis.model;
import com.yihaomen.mybatis.enums.Gender;
import com.yihaomen.mybatis.enums.Subject;
import java.util.List;

public class Teacher {
 private int id;
 private String name;
 private Gender gender;
 private Subject subject;
 private String degree;
 private List<Student> students;

 setters&getters
}

三、新建映射關(guān)系

package com.yihaomen.mybatis.dao;
import com.yihaomen.mybatis.model.Student;
import org.springframework.stereotype.Repository;
import java.util.List;

@Repository
public interface StudentMapper {
 List<Student> selectStudents();
}

student.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yihaomen.mybatis.dao.StudentMapper">
 <resultMap id="studentMap" type="Student">
  <id property="id" column="id" />
  <result property="name" column="name" />
  <result property="age" column="age" />
  <result property="gender" column="gender" typeHandler="org.apache.ibatis.type.EnumOrdinalTypeHandler" />
 </resultMap>
 <resultMap id="collectionMap" type="Student" extends="studentMap">
  <collection property="teachers" ofType="Teacher">
   <id property="id" column="teach_id" />
   <result property="name" column="tname"/>
   <result property="gender" column="tgender" typeHandler="org.apache.ibatis.type.EnumOrdinalTypeHandler"/>
   <result property="subject" column="tsubject" typeHandler="org.apache.ibatis.type.EnumTypeHandler"/>
   <result property="degree" column="tdegree" javaType="string" jdbcType="VARCHAR"/>
  </collection>
 </resultMap>
 <select id="selectStudents" resultMap="collectionMap">
  SELECT
   s.id, s.name, s.gender, t.id teach_id, t.name tname, t.gender tgender, t.subject tsubject, t.degree tdegree
  FROM
   student s
  LEFT JOIN
   stu_teach_rel str
  ON
   s.id = str.stu_id
  LEFT JOIN
   teacher t
  ON
   t.id = str.teach_id
 </select>
</mapper>

四、在configuration.xml中配置相關(guān)mapper

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
 <properties resource="jdbc.properties"/>
 <typeAliases>
  <typeAlias alias="Student" type="com.yihaomen.mybatis.model.Student" />
  <typeAlias alias="Teacher" type="com.yihaomen.mybatis.model.Teacher" />
 </typeAliases>

 <environments default="development">
  <environment id="development">
   <transactionManager type="JDBC"/>
   <dataSource type="POOLED">
    <property name="driver" value="${jdbc.driver}"/>
    <property name="url" value="${jdbc.url}" />
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
   </dataSource>
  </environment>
 </environments>

 <mappers>
  <mapper resource="com/yihaomen/mybatis/model/Student.xml"/>
 </mappers>
</configuration>

五、測試

package com.yihaomen.service.student;
import com.yihaomen.mybatis.dao.StudentMapper;
import com.yihaomen.mybatis.model.Student;
import com.yihaomen.mybatis.model.Teacher;
import com.yihaomen.service.BaseTest;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import java.util.List;

public class TestStudent extends BaseTest {
 public static void testStuTeachRela() {
  SqlSessionFactory sqlSessionFactory = getSession();
  SqlSession session = sqlSessionFactory.openSession();
  StudentMapper mapper = session.getMapper(StudentMapper.class);
  List<Student> list = mapper.selectStudents();

  for(Student s : list) {
   System.out.println("------------------");
   System.out.println(s.getName() + "," + s.getAge() + "," + s.getGender());
   for(Teacher t : s.getTeachers()) {
    System.out.println(t.getName() + "," + t.getGender() + "," + t.getSubject());
   }
  }
 }

 public static void main(String[] args) {
  testStuTeachRela();
 }
}

以上這篇mybatis多對多關(guān)聯(lián)實(shí)戰(zhàn)教程(推薦)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 升級springboot3.x踩坑記錄

    升級springboot3.x踩坑記錄

    本文主要介紹了升級springboot3.x踩坑記錄,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05
  • java TreeUtil菜單遞歸工具類

    java TreeUtil菜單遞歸工具類

    這篇文章主要為大家詳細(xì)介紹了java TreeUtil菜單遞歸工具類,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • JAVA對稱加密算法PBE定義與用法實(shí)例分析

    JAVA對稱加密算法PBE定義與用法實(shí)例分析

    這篇文章主要介紹了JAVA對稱加密算法PBE定義與用法,結(jié)合實(shí)例形式分析了JAVA對稱加密算法PBE的概念、原理、定義及使用方法,需要的朋友可以參考下
    2019-09-09
  • java中enum的用法

    java中enum的用法

    這篇文章主要介紹了java中enum的用法,包括了枚舉類型的基本定義及用法分析,對于學(xué)習(xí)Java有著一定的學(xué)習(xí)與借鑒價(jià)值,需要的朋友可以參考下
    2014-11-11
  • 淺談String.split()遇到空字符串的幾種情況

    淺談String.split()遇到空字符串的幾種情況

    這篇文章主要介紹了淺談String.split()遇到空字符串的幾種情況,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • 全面了解java異常

    全面了解java異常

    本文非常詳細(xì)的介紹了java異常,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們可以學(xué)習(xí)一下這篇文章
    2021-08-08
  • 如何根據(jù)帶賬號密碼的WSDL地址生成JAVA代碼

    如何根據(jù)帶賬號密碼的WSDL地址生成JAVA代碼

    這篇文章主要介紹了如何根據(jù)帶賬號密碼的WSDL地址生成JAVA代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-10-10
  • JAVA SPI特性及簡單應(yīng)用代碼實(shí)例

    JAVA SPI特性及簡單應(yīng)用代碼實(shí)例

    這篇文章主要介紹了JAVA SPI特性及簡單應(yīng)用代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-05-05
  • 你真的了解java單例模式了嗎?

    你真的了解java單例模式了嗎?

    這篇文章主要介紹了你真的了解java單例模式了嗎?實(shí)際上單例模式有著好幾個變種,并且多線程中涉及到線程安全問題,,需要的朋友可以參考下
    2019-06-06
  • java模擬http的Get/Post請求,并設(shè)置ip與port代理的方法

    java模擬http的Get/Post請求,并設(shè)置ip與port代理的方法

    下面小編就為大家?guī)硪黄猨ava模擬http的Get/Post請求,并設(shè)置ip與port代理的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02

最新評論

武冈市| 和硕县| 和静县| 阿荣旗| 靖江市| 香格里拉县| 吉隆县| 合作市| 繁峙县| 通河县| 浏阳市| 广南县| 庆城县| 湟源县| 蕲春县| 宁乡县| 察隅县| 犍为县| 福清市| 林州市| 牡丹江市| 平邑县| 辉县市| 邢台市| 韶山市| 师宗县| 绵竹市| 博客| 卓资县| 襄城县| 宜良县| 兰考县| 阳春市| 元朗区| 龙胜| 伊金霍洛旗| 隆德县| 遂川县| 浦东新区| 托里县| 广西|