激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - Java教程 - 基于Mybaits映射的一點(diǎn)心得(分享)

基于Mybaits映射的一點(diǎn)心得(分享)

2021-01-31 17:16紅尾巴的豬 Java教程

下面小編就為大家?guī)?lái)一篇基于Mybaits映射的一點(diǎn)心得(分享)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

以前一直使用Hibernate,基本上沒(méi)用過(guò)Mybatis,工作中需要做映射關(guān)系,簡(jiǎn)單的了解下Mybatis的映射。

兩者相差不多都支持一對(duì)一,一對(duì)多,多對(duì)多,本章簡(jiǎn)單介紹一對(duì)一的使用以及注意點(diǎn)。

建表語(yǔ)句:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
CREATE TABLE `bloc` (
 
 `id` int(11) NOT NULL auto_increment,
 
 `name` varchar(255) collate utf8_bin default NULL,
 
 `company_id` int(11) default NULL,
 
 `intro` varchar(255) collate utf8_bin default NULL,
 
 PRIMARY KEY (`id`)
 
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
 
 
 
INSERT INTO`bloc` (`id`, `name`, `company_id`, `intro`) VALUES ('1', '宏偉集團(tuán)', '1', '跨國(guó)集團(tuán)');
?
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TABLE `company` (
 
 `id` int(11) NOT NULL,
 
 `name` varchar(255) collate utf8_bin default NULL,
 
 `intro` varchar(255) collate utf8_bin default NULL,
 
 PRIMARY KEY (`id`)
 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
 
INSERT INTO company (`id`, `name`, `intro`) VALUES ('1', '', NULL);

形式一:子查詢(xún)

JAVA代碼:SqlSessionHelper.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package com.demo.mybatis;
 
import java.io.IOException;
import java.io.Reader;
 
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 
public class SqlSessionHelper {
  
 public static SqlSessionFactory getSessionFactory() throws IOException{
  SqlSessionFactory sessionFactory = null;
  Reader reader = Resources.getResourceAsReader("configuration.xml");
  try{
   sessionFactory = new SqlSessionFactoryBuilder().build(reader);;
  }catch(Exception ex){
   ex.printStackTrace();
  }
  return sessionFactory;
 }
}

Test.java:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package com.demo.mybatis;
 
import java.util.List;
 
import org.apache.ibatis.session.SqlSession;
 
import mapper.BlocMapper;
import model.Bloc;
 
public class Test {
 
 /**
  * @param args
  */
 public static void main(String[] args) {
   
  try{
   SqlSession sqlSession = SqlSessionHelper.getSessionFactory().openSession();
   BlocMapper blocMapper = sqlSession.getMapper(BlocMapper.class);
   List<Bloc> blocs = blocMapper.getBlocList("1");
   for (Bloc bloc : blocs) {
    System.out.println("companyName = "bloc.getCompany().getName());
   }
  }catch(Exception ex){
   System.out.println(ex.getMessage());
  }
 
 }
 
}

mapper:

?
1
2
3
4
5
6
7
8
9
10
package mapper;
 
import java.util.List;
 
import model.Bloc;
 
public interface BlocMapper {
 
 public List<Bloc> getBlocList(String name);
}
?
1
2
3
4
5
package mapper;
 
public interface CompanyMapper {
 
}

model:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package model;
 
public class Bloc {
 
 private Integer id;
  
 private String name;
  
 private String intro;
  
 private Company company;
 
 public Integer getId() {
  return id;
 }
 
 public void setId(Integer id) {
  this.id = id;
 }
 
 public String getName() {
  return name;
 }
 
 public void setName(String name) {
  this.name = name;
 }
 
 public String getIntro() {
  return intro;
 }
 
 public void setIntro(String intro) {
  this.intro = intro;
 }
 
 public Company getCompany() {
  return company;
 }
 
 public void setCompany(Company company) {
  this.company = company;
 }
  
  
}
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package model;
 
public class Company {
 
 private Integer id;
  
 private String name;
  
 private Integer intro;
 
 public Integer getId() {
  return id;
 }
 
 public void setId(Integer id) {
  this.id = id;
 }
 
 public String getName() {
  return name;
 }
 
 public void setName(String name) {
  this.name = name;
 }
 
 public Integer getIntro() {
  return intro;
 }
 
 public void setIntro(Integer intro) {
  this.intro = intro;
 }
  
  
}

映射配置如下:(如果是一堆多的話“brandObject”改成實(shí)體List屬性association 改成collection )

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?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="mapper.CompanyMapper">
  
 <resultMap id="BaseResultMap" type="model.Company" >
  <id column="id" property="id" jdbcType="INTEGER" />
  <result column="name" property="name" jdbcType="VARCHAR" />
  <result column="intro" property="intro" jdbcType="VARCHAR" />
 </resultMap>
 <select id = "getCompanyInfo" parameterType="Integer" resultMap="BaseResultMap">
  select * from company where id = #{id}
 </select>
</mapper>
?
1
2
3
4
5
6
7
8
9
10
11
12
13
<mapper namespace="mapper.BlocMapper">
 <resultMap id="BaseResultMap" type="model.Bloc" >
  <id column="id" property="id" jdbcType="INTEGER" />
  <result column="name" property="name" jdbcType="VARCHAR" />
  <result column="intro" property="intro" jdbcType="VARCHAR" />
  <association column="company_id" property="company" select="mapper.CompanyMapper.getCompanyInfo">
  </association>
 </resultMap>
 
 <select id="getBlocList" parameterType="String" resultMap="BaseResultMap">
  select * from bloc where name = #{name}
 </select>
</mapper>

column:表中的字段 property:實(shí)體當(dāng)中的字段名 select:引入的另一個(gè)xxxMapper.xml的getCompanyInfo方法

這樣當(dāng)查詢(xún)用的映射時(shí)檢測(cè)到有select就會(huì)執(zhí)行你引入的另一個(gè)Mapper的查詢(xún)方法,查詢(xún)條件是company_id= 查詢(xún)方法的參數(shù)

運(yùn)行結(jié)果

?
1
companyName =

形式二:關(guān)聯(lián)查詢(xún)

映射配置實(shí)體測(cè)試類(lèi)一樣:

?
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="mapper.BlocMapper">
 <resultMap id="BaseResultMap" type="model.Bloc" >
  <id column="id" property="id" jdbcType="INTEGER" />
  <result column="name" property="name" jdbcType="VARCHAR" />
  <result column="intro" property="intro" jdbcType="VARCHAR" />
  <!-- 查詢(xún)會(huì)有賦值紊亂問(wèn)題 -->
  <association column="company_id" property="company" resultMap = "mapper.CompanyMapper.BaseResultMap">
  </association>
  <!-- <association column="company_id" property="company" select="mapper.CompanyMapper.getCompanyInfo">
  </association> -->
 </resultMap>
  
 <select id="getBlocList" parameterType="String" resultMap="BaseResultMap">
  <!-- select * from bloc where name = #{name} -->
  <!-- 查詢(xún)會(huì)有賦值紊亂問(wèn)題 -->
  select * from bloc b left join company c on b.company_id = c.id where b.name = #{name}
 </select>
</mapper>

column:表中的字段 property:實(shí)體當(dāng)中的字段名 resultMap :引入另一個(gè)Mapper的映射

值得注意的是:因?yàn)槭乔短子成洌孕问蕉趦蓚€(gè)實(shí)體字段名一樣的情況下會(huì)引發(fā)字段賦值的紊亂,例如兩個(gè)實(shí)體都有name 當(dāng)?shù)谝粋€(gè)實(shí)體name有值,第二個(gè)實(shí)體name沒(méi)有值的時(shí)候,查詢(xún)出來(lái)的結(jié)果是兩個(gè)實(shí)體name都有值,且都是一樣的為第一個(gè)實(shí)體的name值

運(yùn)行結(jié)果為

?
1
companyName = 宏偉集團(tuán)

顯然運(yùn)行結(jié)果不是我們想要的結(jié)果

以上簡(jiǎn)單的Demo希望能幫助初學(xué)Mybatis童鞋!!

這篇基于Mybaits映射的一點(diǎn)心得(分享)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持服務(wù)器之家。

原文鏈接:http://www.cnblogs.com/zhuxiansheng/p/7794292.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 免费永久在线观看黄网 | 久久老司机 | gogo全球大胆高清人露出91 | 日本精品中文字幕 | 久久精品视频首页 | 久久亚洲春色中文字幕久久 | 在线观看免费毛片视频 | 国产成人精品午夜 | 国产精品亚洲综合一区二区三区 | 成人精品免费在线观看 | 久久99精品国产自在现线 | 久久久www成人免费毛片 | 免费观看高清视频网站 | 天堂在线中文资源 | 黄色毛片一级 | 日韩电影一区二区三区 | 欧美日韩在线视频一区 | 黄色av一区二区三区 | 在线天堂中文字幕 | 黄色aaa视频 | 国产精品久久久免费观看 | 午夜国产在线观看 | 国产精品久久久久久久久久 | 欧美成人一级 | 亚欧美一区二区 | 国产深夜福利视频在线播放 | 久久久噜噜噜久久熟有声小说 | 免费毛片随便看 | 免费黄色在线观看网站 | 欧美性激情视频 | 久久精品欧美电影 | 久久免费综合视频 | 高清一区二区在线观看 | 久久久一区二区三区四区 | 羞羞的小视频 | 日韩精品久久久久久久九岛 | 亚洲一区二区三区精品在线观看 | 欧美一级免费看 | 国产99久久久久久免费看农村 | 99激情视频 | 国产精品美女一区二区 |