1.值的传递 - Map传值

可以通过对象获取Map传递值,在配置文件中通过 #{} 或 ${} 进行应用

查询30-40岁的用户

    <!-- 值的传递 - Map传值 -->
<select id="queryRange" resultType="cn.tedu.mybatis.beans.User">
select * from user where age between #{min} and #{max};
</select>

测试类

// 根据配置文件创建sqlSessionFactory
private SqlSessionFactory factory = null;
@Before
public void before() throws Exception{
//1.读取MyBatis核心配置文件
InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
//2.根据配置文件创建sqlSessionFactory
factory = new SqlSessionFactoryBuilder().build(in);
} /**
* Map传值
*/
@Test
public void test02(){
// 1.通过map,准备参数
Map<String,Integer> map = new HashMap<String,Integer>();
map.put("min", 20);
map.put("max", 40);
// 2.创建sqlSession
SqlSession session = factory.openSession();
// 3.执行操作
List<User> list = session.selectList("cn.tedu.mybatis.beans.UserMapper.queryRange",map);
// 4.遍历结果
System.out.println(Arrays.toString(list.toArray()));
}

2.值的传递 - 对象传值

可以通过对象获取Map传递至,在配置文件中通过#{}  和 ${} 进行应用

在UserMapper.xml中配置

    <!-- 值的传递 - 对象传值 -->
<select id="insertUser">
insert into user values (null,#{name},${age})
</select>

** 此处通过#{xxx}的语法来引用属性

测试类:

    // 根据配置文件创建sqlSessionFactory
private SqlSessionFactory factory = null;
@Before
public void before() throws Exception{
//1.读取MyBatis核心配置文件
InputStream in = Resources.getResourceAsStream("sqlMapConfig.xml");
//2.根据配置文件创建sqlSessionFactory
factory = new SqlSessionFactoryBuilder().build(in);
} /**
* 对象传值
*/
@Test
public void test03(){
User user = new User();
user.setName("cjj");
user.setAge(24); // 1.创建sqlSession
SqlSession session = factory.openSession();
// 2.执行操作
session.insert("cn.tedu.mybatis.beans.UserMapper.insertUser",user);
// 3.提交事务,mybatis自动开启事务,但是并不会自动提交,需要手动提交事物
session.commit();
}

注意:mybatis自动开启事务,但是并不会自动提交,需要手动提交事物

3.值的传递 - 单值传值

如果程序中只有一个参数需要传递给sql,则不需要封装到bean或map中,可以直接传入。

在sql中可以使用任意名称获取到这个参数,虽然名称可以任意,但通常仍然使用该属性的名称,以便阅读。

    <!-- 值的传递 - 单值传值 -->
<select id="queryOne" resultType="cn.tedu.mybatis.beans.User">
select * from user where id = #{id}
</select>

测试类:

    /**
* 单值传递
*/
@Test
public void test04(){
// 1.创建sqlSession
SqlSession session = factory.openSession();
// 2.执行操作
User user = session.selectOne("cn.tedu.mybatis.beans.UserMapper.queryOne",3);
// 3.遍历结果
System.out.println(user);
}

MyBatis 值的传递的更多相关文章

  1. Mybatis多参传递的四种解决方案

    Mybatis多参传递的四种解决方案 代码异常:org.apache.ibatis.binding.BindingException: Parameter 'param' not found. 长时间 ...

  2. 2. QT窗体间值的传递

    一.主窗体与子窗体传参 方法有很多,这里介绍一种通过重载子窗体的构造函数实现主窗体参数传入到子窗体,并通过QT信号和槽的机制实现子窗口到主窗口值的传递. 主和子窗体的设置如下: 主要实现功能为: 1 ...

  3. shopnc 导出Excel数据问题实例 && ajax 获取当前值并传递

    任务:从商家中心导出数据,各个商品所属情况. 商品导出到Excel文件功能 /导出exel 功能make-in-lemon public function createExcelOp(){ $mode ...

  4. 关于js对象值的传递

    结合红宝书和网上的一些文章,记录下自己对关于js对象的值的传递的一些理解. js对象是保存在堆内存中的,当把对象赋值给变量时,是把对象在堆内存的引用(地址)赋值给了变量,变量通过地址来访问对象.下面来 ...

  5. 页面传递的都是string ; 每个标签要有name的原因是为了取值 因为传递给后台是键值对的形式

    页面传递的都是string ; 每个标签要有name的原因是为了取值  因为传递给后台是键值对的形式

  6. [转]ASP.NET MVC中的两个Action之间值的传递--TempData

    本文转自:ASP.NET MVC中的两个Action之间值的传递--TempData 一. ASP.NET MVC中的TempData 在ASP.NET MVC框架的ControllerBase中存在 ...

  7. DDX和DDV——控件与变量之间值的传递

    DoDataExchange由框架调用,作用是交互并且验证对话框数据,主要由(DDX) 和 (DDV)宏实现. 永远不要直接调用这个函数,而是通过UpdateData(TRUE/FALSE)实现控件与 ...

  8. delphi的一些语法知识 以及参数传递问题,按引用方式传递参数,按值方式传递参数

    //delphi中exit,abort,break,continue 的区别 exit: 退出函数体abort: 遇到异常,安静处理,就是不显示不提示break: 退出当前循环体,包括for ,whi ...

  9. C++入门经典-例5.20-右值引用传递参数

    1:使用字面值(如1.3.15f.true),或者表达式等临时变量作为函数实参传递时,按左值引用传递参数会被编译器阻止.而进行值传递时,将产生一个和参数同等大小的副本.C++11提供了右值引用传递参数 ...

随机推荐

  1. C++学习(六)(C语言部分)之 输出

    输出学习时的笔记(其实也没什么用,留着给自己看的) printf 用于输出内容 控制台黑窗口printf("要输出的内容"); //可以是任意内容-->如果要输出变量 1.格 ...

  2. hdu2204 Eddy's爱好 打表+容斥原理

    Ignatius 喜欢收集蝴蝶标本和邮票,但是Eddy的爱好很特别,他对数字比较感兴趣,他曾经一度沉迷于素数,而现在他对于一些新的特殊数比较有兴趣.这些特殊数是这样的:这些数都能表示成M^K,M和K是 ...

  3. Two Sum II - Input array is sorted

    Given an array of integers that is already sorted in ascending order, find two numbers such that the ...

  4. LeetCode – Lemonade Change

    At a lemonade stand, each lemonade costs $5. Customers are standing in a queue to buy from you, and ...

  5. 直面Java 第002期

    . Java和C++同为面向对象语言,Java和C++主要区别有哪些?双方个有哪些优缺点? 解: C++ 被设计成主要用在系统性应用程序设计上的语言,对C语言进行了扩展.对于C语言这个为运行效率设计的 ...

  6. 【BZOJ1067】【SCOI2007】降雨量

    新人求助,降雨量那题,本机AC提交AC 原题: 我们常常会说这样的话:“X年是自Y年以来降雨量最多的”.它的含义是X年的降雨量不超过Y年,且对于任意Y<Z<X,Z年的降雨量严格小于X年.例 ...

  7. CS程序中XML编码Encode和解码Decode

    VB6的代码,原则上只要是Windows系统均可以使用此方法 Function XMLEncode(ByVal text As String) As String Dim xmldoc Set xml ...

  8. vm centos7中用NAT模式配置上网

    第一步:设置虚拟机的NAT相关网络设置:   点击5标致处的“NAT设置”会出现设置6标致处的网关.   第二部:设置操作系统网络设置,右击上图中9标致处的系统,点击设置   第三部:配置操作系统ip ...

  9. day 29 socketsetserver 模块

    1.FTP上传/下载服务端/客户端. --------------------------------------------------------------------------------- ...

  10. 一个简单的web.py论坛

    一.概述 forum是一个简单的web.py论坛,后端采用Python+web.py+MySQL,前端采用HTML+CSS+JavaScript+jQuery+RequireJS. 该论坛的主要功能包 ...