1. 程式人生 > >Mybatis進階學習筆記——輸入對映

Mybatis進階學習筆記——輸入對映

1.輸入對映

輸入對映支援的型別:

1) 基本的型別,int,String,double 等(*)
2) JavaBean 型別(*)
3) 包裝JavaBean 型別(物件裡面包含另一個物件)

1.1基本型別

1 <insert id="testParameterType" parameterType="String">
2     INSERT INTO t_customer(NAME) VALUES(#{name})
3 </insert>

#{name}也可以自定義,如#{value}。

注意:使用單一引數時可這樣定義,多個引數時不可以,需要與定義的名稱一致。

 1 // 輸入對映 2 public void testParameterType(String name); 

 1     /**
 2      * 輸入對映-基本型別
 3      */
 4     @Test
 5     public void test1() {
 6         SqlSession sqlSession = SessionUtils.getSession();
 7         // getMapper(): 返回指定介面的動態代理的實現類物件
 8         CustomerDao dao = sqlSession.getMapper(CustomerDao.class
); 9 dao.testParameterType("張三"); 10 sqlSession.commit(); 11 sqlSession.close(); 12 }

1.2JavaBean 型別

1 <insert id="testParameterType" parameterType="Customer">
2         INSERT INTO t_customer(NAME,gender,telephone) VALUES(#{name},#{gender},#{telephone})
3 </
insert>

 1 public void testParameterType(Customer c); 

 1     /**
 2      * 輸入對映-Javabean
 3      */
 4     @Test
 5     public void test1() {
 6         SqlSession sqlSession = SessionUtils.getSession();
 7         // getMapper(): 返回指定介面的動態代理的實現類物件
 8         CustomerDao dao = sqlSession.getMapper(CustomerDao.class);
 9         Customer c = new Customer();
10         c.setName("張三666");
11         c.setGender("男");
12         c.setTelephone("123456789");
13         dao.testParameterType(c);
14         sqlSession.commit();
15         sqlSession.close();
16     }

1.3包裝JavaBean 型別(物件裡面包含另一個物件)

一個物件裡面包含另一個物件

CustomerVo.java:

 1 package cn.sm1234.domain;
 2 
 3 /**
 4  * CustomerVo包裝JaveBean型別
 5  * @author Jack
 6  *
 7  */
 8 public class CustomerVo {
 9 
10     private Customer customer;
11 
12     public Customer getCustomer() {
13         return customer;
14     }
15 
16     public void setCustomer(Customer customer) {
17         this.customer = customer;
18     }    
19 }
1     <insert id="testParameterType" parameterType="CustomerVo">
2     <!-- 
3         customer.name傳值說明:
4         customer來源於CustomerVo.java中的private Customer customer;定義
5      -->
6         INSERT INTO t_customer(NAME,gender,telephone) VALUES(#{customer.name},#{customer.gender},#{customer.telephone})
7     </insert>

 1 public void testParameterType(CustomerVo c); 

 1     /**
 2      * 輸入對映-包裝JavaBean 型別(物件裡面包含另一個物件)
 3      */
 4     @Test
 5     public void test1() {
 6         SqlSession sqlSession = SessionUtils.getSession();
 7         // getMapper(): 返回指定介面的動態代理的實現類物件
 8         CustomerDao dao = sqlSession.getMapper(CustomerDao.class);
 9         CustomerVo vo = new CustomerVo();
10         Customer c = new Customer();
11         c.setName("張三333");
12         c.setGender("男");
13         c.setTelephone("123456789");
14         vo.setCustomer(c);
15         dao.testParameterType(vo);
16         sqlSession.commit();
17         sqlSession.close();
18     }

補充:sqlMapConfig.xml定義別名方式

1     <!-- 定義別名 -->
2     <typeAliases>
3         <!-- type: 需要對映的型別 alias: 別名 -->
4         <!-- <typeAlias type="cn.sm1234.domain.Customer" alias="customer"/> -->
5         <!-- ibatis3.0推薦使用的標籤,定位到包名即可 -->
6         <package name="cn.sm1234.domain" />
7     </typeAliases>