真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

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

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

網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、微信小程序開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了澠池免費(fèi)建站歡迎大家使用!

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

建表語(yǔ)句:

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)');
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);

形式一:子查詢

JAVA代碼:SqlSessionHelper.java

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:

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 blocs = blocMapper.getBlocList("1"); 
   for (Bloc bloc : blocs) { 
    System.out.println("companyName = "bloc.getCompany().getName()); 
   } 
  }catch(Exception ex){ 
   System.out.println(ex.getMessage()); 
  } 
 
 } 
 
}

mapper:

package mapper; 
 
import java.util.List; 
 
import model.Bloc; 
 
public interface BlocMapper { 
 
 public List getBlocList(String name); 
} 
package mapper; 
 
public interface CompanyMapper { 
 
} 

model:

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; 
 } 
  
  
}
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 )

<?xml version="1.0" encoding="UTF-8"?> 
 
 
  
  
   
   
   
  
  
 

 
  
  
  
  
  
 
 
 

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

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

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

companyName = 

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

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

<?xml version="1.0" encoding="UTF-8"?> 
 
 
  
   
   
   
   
   
   
   
  
  
  

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í)候,查詢出來(lái)的結(jié)果是兩個(gè)實(shí)體name都有值,且都是一樣的為第一個(gè)實(shí)體的name值

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

companyName = 宏偉集團(tuán) 

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

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

這篇基于Mybaits映射的一點(diǎn)心得(分享)就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持創(chuàng)新互聯(lián)。


網(wǎng)頁(yè)題目:基于Mybaits映射的一點(diǎn)心得(分享)
URL地址:http://weahome.cn/article/jcdsjj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部