MyBatis 值的传递
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 值的传递的更多相关文章
- Mybatis多参传递的四种解决方案
Mybatis多参传递的四种解决方案 代码异常:org.apache.ibatis.binding.BindingException: Parameter 'param' not found. 长时间 ...
- 2. QT窗体间值的传递
一.主窗体与子窗体传参 方法有很多,这里介绍一种通过重载子窗体的构造函数实现主窗体参数传入到子窗体,并通过QT信号和槽的机制实现子窗口到主窗口值的传递. 主和子窗体的设置如下: 主要实现功能为: 1 ...
- shopnc 导出Excel数据问题实例 && ajax 获取当前值并传递
任务:从商家中心导出数据,各个商品所属情况. 商品导出到Excel文件功能 /导出exel 功能make-in-lemon public function createExcelOp(){ $mode ...
- 关于js对象值的传递
结合红宝书和网上的一些文章,记录下自己对关于js对象的值的传递的一些理解. js对象是保存在堆内存中的,当把对象赋值给变量时,是把对象在堆内存的引用(地址)赋值给了变量,变量通过地址来访问对象.下面来 ...
- 页面传递的都是string ; 每个标签要有name的原因是为了取值 因为传递给后台是键值对的形式
页面传递的都是string ; 每个标签要有name的原因是为了取值 因为传递给后台是键值对的形式
- [转]ASP.NET MVC中的两个Action之间值的传递--TempData
本文转自:ASP.NET MVC中的两个Action之间值的传递--TempData 一. ASP.NET MVC中的TempData 在ASP.NET MVC框架的ControllerBase中存在 ...
- DDX和DDV——控件与变量之间值的传递
DoDataExchange由框架调用,作用是交互并且验证对话框数据,主要由(DDX) 和 (DDV)宏实现. 永远不要直接调用这个函数,而是通过UpdateData(TRUE/FALSE)实现控件与 ...
- delphi的一些语法知识 以及参数传递问题,按引用方式传递参数,按值方式传递参数
//delphi中exit,abort,break,continue 的区别 exit: 退出函数体abort: 遇到异常,安静处理,就是不显示不提示break: 退出当前循环体,包括for ,whi ...
- C++入门经典-例5.20-右值引用传递参数
1:使用字面值(如1.3.15f.true),或者表达式等临时变量作为函数实参传递时,按左值引用传递参数会被编译器阻止.而进行值传递时,将产生一个和参数同等大小的副本.C++11提供了右值引用传递参数 ...
随机推荐
- linux 的IP配置和网络问题的排查
1.6 IP的配制, 首先要会用: ifconfig 和加相关参数如: ifconfig -a, 来查看,自己的电脑网络配制. 再次就必需要知道,默认IP配制文件的地方: cd /etc/sysc ...
- Linux系统修改Home下的目录为英文
修改Home下的目录为英文 修改目录映射文件名: vim .config/user-dirs.dirs 修改如下:XDG_DESKTOP_DIR="$HOME/Desktop"XD ...
- dp 优化 F2. Pictures with Kittens (hard version)
dp的优化可能是自己的弱项吧 F1中n*n*n的复杂度强行过去了 F2就无能为力了: 状态转移 dp[ i ] [ j ] 第一个i存的是位置 1-n; j是放入数字的个数 然后F1就暴力过去了 ...
- Linux下7z工具安装
sudo apt-get install p7zip p7zip-full p7zip-rar 使用: 使用7z --help查看使用方法. 解压: 7za X test.7z
- 使用JQuery反向选择checkbox
HTML代码: <input id="haspda" type="checkbox" name="haspda" value=&quo ...
- XML之命名空间的作用(xmlns)
http://www.w3school.com.cn/xml/xml_namespaces.asp http://blog.csdn.net/zhch152/article/details/81913 ...
- Vue的路由动态重定向和导航守卫
一.重定向 重定向也是通过 routes 配置来完成,下面例子是从 /a 重定向到 /b: const router = new VueRouter({ routes: [ { path: '/a', ...
- MySQL--字符集参数
================================================== MySQL字符集相关参数 character_set_client: 表示客户端请求数据的字符集 ...
- UWP --- Display Content 显示基础内容
UWP前端使用的是XAML语言, 这门语言和Xamarin Forms 是比较类似(当你开发多了之后会发现StackPanel和StackLayout傻傻的分不清) 言归正传. UWP中显示内容最简单 ...
- PICT测试工具的安装及使用
PICT工具就是在微软公司出品一款成对组合的命令行生成工具,现在已经对外提供,可以在互联网上下载到 .PICT 可以有效地按照两两测试的原理,进行测试用例设计.在使用PICT时,需要输入与测试用例相关 ...