一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術(shù)|正則表達(dá)式|

服務(wù)器之家 - 編程語言 - JAVA教程 - MyBatis使用級聯(lián)操作解決lombok構(gòu)造方法識別失敗問題

MyBatis使用級聯(lián)操作解決lombok構(gòu)造方法識別失敗問題

2020-07-08 14:33viewts JAVA教程

這篇文章主要介紹了MyBatis使用級聯(lián)操作解決lombok構(gòu)造方法識別失敗問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

先解決一下idea無法識別lombok構(gòu)造方法的問題,解決方案是在idea的插件中下載并安裝lombok插件。

MyBatis級聯(lián)操作,列舉最簡單的student-classes(學(xué)生與班級)的關(guān)系表:

?
1
2
3
4
5
create table if not exists student (
  id int primary key auto_increment,
  name varchar(20) not null comment '學(xué)生姓名',
  cid int not null comment '班級id'
);
?
1
2
3
4
create table if not exists classes (
  id int primary key auto_increment,
  name varchar(20) not null comment '班級名'
);

接下來,創(chuàng)建關(guān)系表對應(yīng)的實體類:

?
1
2
3
4
5
6
@Data
public class Student {
  private long id;
  private String name;
  private Classes classes;
}
?
1
2
3
4
5
6
@Data
public class Classes {
  private long id;
  private String name;
  private List<Student> students;
}

在repository包下新建StudentRepository接口:

?
1
2
3
public interface StudentRepository {
  public Student findById(long id);
}

然后創(chuàng)建對應(yīng)的mapper文件StudentRepository.xml:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?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.wts.repository.StudentRepository">
  
  <resultMap id="studentMap" type="com.wts.entity.Student">
    <id column="id" property="id"></id>
    <result column="name" property="name"></result>
    <association property="classes" javaType="com.wts.entity.Classes">
      <id column="cid" property="id"></id>
      <result column="cname" property="name"></result>
    </association>
  </resultMap>
  
  <select id="findById" parameterType="long" resultMap="studentMap">
    select s.id,s.name,c.id as cid,c.name as cname from student s,classes c where s.id = #{id} and s.cid = c.id
  </select>
</mapper>

注意這里有幾個限制:

1.命名空間,xml文件的namespace必須是對應(yīng)接口的全類名

2.Statement標(biāo)簽的id必須與接口方法相同,其中parameterType為參數(shù),resultType為返回類型,復(fù)雜類型用resultMap

3.復(fù)雜類型resultMap中多對一用association,一堆多用集合collection

MyBatis執(zhí)行sql返回的結(jié)果集會和關(guān)系對象映射起來,注意列與字段的對應(yīng)關(guān)系。

然后將mapper引入:

?
1
2
3
<mappers>
  <mapper resource="com/wts/repository/StudentRepository.xml"></mapper>
</mappers>

編寫測試方法:

?
1
2
3
4
5
6
7
8
9
10
@Test
public void test03() {
  InputStream inputStream = AppTest.class.getClassLoader().getResourceAsStream("config.xml");
  SqlSessionFactory sqlSessionFactory = (new SqlSessionFactoryBuilder()).build(inputStream);
  try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
    // 級聯(lián)查詢
    StudentRepository studentRepository = sqlSession.getMapper(StudentRepository.class);
    System.out.println(studentRepository.findById(1L));
  }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

原文鏈接:https://www.cnblogs.com/viewts/p/13213352.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产一区日韩二区欧美三区 | 双性np玩烂了np欲之国的太子 | 爱情岛论坛自拍永久入口 | 91大神精品| 免费一级片在线观看 | 美女扒开粉嫩尿口漫画 | 秋霞鲁丝影院久久人人综合 | 日韩国产欧美一区二区三区 | 风间由美一区二区播放合集 | 青青国产成人久久激情91麻豆 | 亚洲色图亚洲色图 | 亚洲欧美日韩综合一区久久 | 无码AV精品一区二区三区 | 青青草精品在线观看 | 成人在线免费观看视频 | 超爽人人做人人爽 | 亚洲无人区乱码中文字幕 | 五月色婷婷网在线观看 | 3p文两男一女办公室高h | 免费网站直接进入 | 成人在线免费观看 | 久久精品黄AA片一区二区三区 | 天天av天天翘天天综合网 | 国产精品四虎在线观看免费 | 免费欧美日韩 | 国产suv精品一区二区四区三区 | www在线观看视频免费 | 百合互慰吃奶互揉漫画 | 91午夜在线观看 | 无套白浆| 日本护士handjob | 狠狠撸在线播放 | 亚洲欧美日韩综合在线播放 | 99久久国产综合精品女小说 | 2018天天拍拍拍免费视频 | 99精品国产综合久久久久 | 国内自拍第1页 | 日韩欧美视频二区 | 精品亚洲视频在线 | 国产日产国无高清码2020 | 国产精品不卡 |