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>

猜你喜欢

转载自www.cnblogs.com/116970u/p/10163410.html