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>