Mybatis進階學習筆記——輸入對映
阿新 • • 發佈:2018-12-23
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>