1.输入映射

输入映射支持的类型:

1) 基本的类型,int,String,double 等(*)
2) JavaBean 类型(*)
3) 包装JavaBean 类型(对象里面包含另一个对象)

1.1基本类型

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

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

注意:使用单一参数时可这样定义,多个参数时不可以,需要与定义的名称一致。

// 输入映射 public void testParameterType(String name);

     /**
* 输入映射-基本类型
*/
@Test
public void test1() {
SqlSession sqlSession = SessionUtils.getSession();
// getMapper(): 返回指定接口的动态代理的实现类对象
CustomerDao dao = sqlSession.getMapper(CustomerDao.class);
dao.testParameterType("张三");
sqlSession.commit();
sqlSession.close();
}

1.2JavaBean 类型

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

public void testParameterType(Customer c);

     /**
* 输入映射-Javabean
*/
@Test
public void test1() {
SqlSession sqlSession = SessionUtils.getSession();
// getMapper(): 返回指定接口的动态代理的实现类对象
CustomerDao dao = sqlSession.getMapper(CustomerDao.class);
Customer c = new Customer();
c.setName("张三666");
c.setGender("男");
c.setTelephone("123456789");
dao.testParameterType(c);
sqlSession.commit();
sqlSession.close();
}

1.3包装JavaBean 类型(对象里面包含另一个对象)

一个对象里面包含另一个对象

CustomerVo.java:

 package cn.sm1234.domain;

 /**
* CustomerVo包装JaveBean类型
* @author Jack
*
*/
public class CustomerVo { private Customer customer; public Customer getCustomer() {
return customer;
} public void setCustomer(Customer customer) {
this.customer = customer;
}
}
     <insert id="testParameterType" parameterType="CustomerVo">
<!--
customer.name传值说明:
customer来源于CustomerVo.java中的private Customer customer;定义
-->
INSERT INTO t_customer(NAME,gender,telephone) VALUES(#{customer.name},#{customer.gender},#{customer.telephone})
</insert>

public void testParameterType(CustomerVo c);

     /**
* 输入映射-包装JavaBean 类型(对象里面包含另一个对象)
*/
@Test
public void test1() {
SqlSession sqlSession = SessionUtils.getSession();
// getMapper(): 返回指定接口的动态代理的实现类对象
CustomerDao dao = sqlSession.getMapper(CustomerDao.class);
CustomerVo vo = new CustomerVo();
Customer c = new Customer();
c.setName("张三333");
c.setGender("男");
c.setTelephone("123456789");
vo.setCustomer(c);
dao.testParameterType(vo);
sqlSession.commit();
sqlSession.close();
}

补充:sqlMapConfig.xml定义别名方式

     <!-- 定义别名 -->
<typeAliases>
<!-- type: 需要映射的类型 alias: 别名 -->
<!-- <typeAlias type="cn.sm1234.domain.Customer" alias="customer"/> -->
<!-- ibatis3.0推荐使用的标签,定位到包名即可 -->
<package name="cn.sm1234.domain" />
</typeAliases>

Mybatis进阶学习笔记——输入映射的更多相关文章

  1. Mybatis进阶学习笔记——输出映射

    输出映射(例如一个方法的返回至使用什么类型去接收) 1.基本类型 <!-- 统计记录数 --> <select id="queryTotalCount" resu ...

  2. Mybatis进阶学习笔记——动态代理方式开发Dao接口、Dao层(推荐第二种)

    1.原始方法开发Dao Dao接口 package cn.sm1234.dao; import java.util.List; import cn.sm1234.domain.Customer; pu ...

  3. Mybatis进阶学习笔记——关系查询——一对多查询

    一个客户拥有多个订单 <resultMap type="User" id="UserOrderResultMap"> <id column=& ...

  4. Mybatis进阶学习笔记——关系查询——一对一查询

    用户和订单的需求 通过查询订单,查询用户,就是一对一查询 (1)自定义JavaBean(常用,推荐使用) <select id="queryOrderUser" result ...

  5. Mybatis进阶学习笔记——动态sql

    1.if标签 <select id="queryByNameAndTelephone" parameterType="Customer" resultTy ...

  6. ROS进阶学习笔记(11)- Turtlebot Navigation and SLAM - ROSMapModify - ROS地图修改

    ROS进阶学习笔记(11)- Turtlebot Navigation and SLAM - 2 - MapModify地图修改 We can use gmapping model to genera ...

  7. 爱了!阿里大神最佳总结“Flutter进阶学习笔记”,理论与实战

    前言 "小步快跑.快速迭代"的开发大环境下,"一套代码.多端运行"是很多开发团队的梦想,美团也一样.他们做了很多跨平台开发框架的尝试:React Native. ...

  8. mybatis的学习笔记

    前几天学习了mybatis,今天来复习一下它的内容. mybatis是一个基于Java的持久层框架,那就涉及到数据库的操作.首先来提出第一个问题:java有jdbc连接数据库,我们为什么还要使用框架呢 ...

  9. MyBatis:学习笔记(4)——动态SQL

    MyBatis:学习笔记(4)——动态SQL 如果使用JDBC或者其他框架,很多时候需要你根据需求手动拼装SQL语句,这是一件非常麻烦的事情.MyBatis提供了对SQL语句动态的组装能力,而且他只有 ...

随机推荐

  1. Uva821-Floyd

    计算所有页面的平均距离. 用floyd求距离,再求平均 #include <algorithm> #include <cstring> #include <ctype.h ...

  2. asp.net 性能提升

    原文链接:http://www.oschina.net/translate/8-ways-improve-asp-net-web-api-performance ASP.NET Web API 是非常 ...

  3. 用powershell 批量卸载 windows 更新

    $KBID = "KB958488" $KBID1 = "KB976902" cls function Remove-Update { $HotFixes = ...

  4. bzoj1007/luogu3194 水平可见直线 (单调栈)

    先按斜率从小到大排序,然后如果排在后面的点B和前面的点A的交点是P,那B会把A在P的右半段覆盖掉,A会把B在P的左半段覆盖掉. 然后如果我们现在又进来了一条线,它跟上一条的交点还在上一条和上上条的左边 ...

  5. 调用系统命令之subprocess模块

    除了常见的os.system和os.popen方法,官方强烈推荐使用subprocess来调用系统命令. 这个库用起来其实很简单,按照惯例先贴一下官文关键点: The subprocess modul ...

  6. ASP:连接Access数据库的方法及使用感受

    连接Access的方式有: 方式1: Set conn = Server.Createobject("ADODB.Connection")conn.open "drive ...

  7. MUI 窗体切换(setting设置)即窗口从右往左切换,返回从左往右切换。

    1)引入mui.min.css 2)引入mui.min.js  引入mui.view.js 1.HTML: //这是页面的主体结构 <div id="app" class=& ...

  8. 静态代码块、构造代码块、构造方法优先级(重点)-------java基础总结

    package com.mon11.day11; /** * 类说明 : * @author 作者 : chenyanlong * @version 创建时间:2017年11月11日 */ publi ...

  9. 编写前程贷投标loadrunner脚本及总结

    1.完成前程贷的(登录,投标) 2.所有的返回信息都用关联函数(web_reg_save_param_ex)进行关联 3.对返回信息用(strcmp)函数进行if判断 4.总结(web_reg_sav ...

  10. 利用bootstrap-datetimepicker实日历插件

    由于项目中需要获取一个时间值,手动输入的话比较Low,这里引用了bootstrap-datetimepicker模块来实现. 1.首先,下载该模块并引用.(官网:http://www.bootcss. ...