mybatis学习笔记(二)
- 三种查询方式,由<resultType 属性控制>
- 第一种 selectList()
- 返回值为LIst
List<People> selectList = session.selectList("com.bjm.mapper.selAll"); for (People people : selectList) {
System.out.println(people.toString());
}
- 返回值为LIst
- 第二种 selectOne()
- 返回值Object,适用于返回结果只是变量或一行数据时
Object selectOne = session.selectOne("com.bjm.mapper.count");
System.out.println(selectOne);
- 返回值Object,适用于返回结果只是变量或一行数据时
- 第三种 selectMap
- 返回值Map,适用于需要在查询结果中通过某列的值取到这行数据的需求。
Map<Object, Object> selectMap = session.selectMap("com.bjm.mapper.selById", "name");
System.out.println(selectMap);
- 返回值Map,适用于需要在查询结果中通过某列的值取到这行数据的需求。
- 第一种 selectList()
- settings标签
- 在mybatis全局配置文件中通过<settings>标签控制 mybatis 全局开关
- 例如在mybatis开启log4j
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
- parameterType属性
- 在xxx(实体类)Mapper.xml中<select><delete>等标签的 parameterType 可以控制参数类型
- SqlSession 的 selectList()和 selectOne()的第二个参数和 selectMap()的第三个参数都表示方法的参数。
Object selectOne = session.selectOne("com.bjm.mapper.selAll",2);
System.out.println(selectOne);<select id="selAll" resultType="com.bjm.pojo.People" parameterType="int">
select * from people where id=#{0}
</select> - 在Mapper.xml 中可以通过#{}获取参数
- parameterType 控制参数类型
- #{}获取参数内容,需要注意#{0}表示使用索引,从 0 开始第一个参数,#{param1}也可以但从1开始计数
- 我们可以发现从sql语句可以看到#{0}使用的是占位符,因此mybatis使用的是preparestatement预处理(因为只有reparestatement可以处理占位符)。
控制台:
org.apache.ibatis.logging.jdbc.BaseJdbcLogger DEBUG ==> Preparing: select * from people where id=?
org.apache.ibatis.logging.jdbc.BaseJdbcLogger DEBUG ==> Parameters: 2(Integer)
org.apache.ibatis.logging.jdbc.BaseJdbcLogger DEBUG <== Total: 1
People [id=2, name=李四, age=22]
- Mapper.xml中使用${}也可以接收传入的数据,那么${}和#{}的区别在哪?
- #{} 获取参数的内容支持:索引获取#{0},#{param1}获取指定位置参数,并且 SQL 使用?占位符,可以防止sql注入。
- ${} 使用的是字符串拼接而不是?(占位符),默认找${内容}内容的 get/set 方法。如果没有get/set方法,则直接寻找属性值。如果写数字,就是一个数字。
- 一般情况推荐使用#{}
- Mapper.xml中使用${}也可以接收传入的数据,那么${}和#{}的区别在哪?
mybatis学习笔记(二)的更多相关文章
- Mybatis学习笔记二
本篇内容,紧接上一篇内容Mybatis学习笔记一 输入映射和输出映射 传递简单类型和pojo类型上篇已介绍过,下面介绍一下包装类型. 传递pojo包装对象 开发中通过可以使用pojo传递查询条件.查询 ...
- mybatis学习笔记(二)-- 使用mybatisUtil工具类体验基于xml和注解实现
项目结构 基础入门可参考:mybatis学习笔记(一)-- 简单入门(附测试Demo详细过程) 开始体验 1.新建项目,新建类MybatisUtil.java,路径:src/util/Mybatis ...
- MyBatis学习笔记(二)——使用MyBatis对表执行CRUD操作
转自孤傲苍狼的博客:http://www.cnblogs.com/xdp-gacl/p/4262895.html 上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用My ...
- MyBatis学习笔记(二) 关联关系
首先给大家推荐几个网页: http://blog.csdn.net/isea533/article/category/2092001 没事看看 - MyBatis工具:www.mybatis.tk h ...
- MyBatis学习笔记(二) Executor
一.概述 当我们打开一个SqlSession的时候,我们就完成了操作数据库的第一步,那MyBatis是如何执行Sql的呢?其实MyBatis的增删改查都是通过Executor执行的,Executor和 ...
- Mybatis学习笔记(二) —— mybatis入门程序
一.mybatis下载 mybaits的代码由github.com管理,下载地址:https://github.com/mybatis/mybatis-3/releases 下载完后的目录结构: 二. ...
- mybatis学习笔记二(接口注解)
直接上代码,全部在代码里讲解. 1.实体类 package com.home.entity; /** * 此类是:user实体类 * @author hpc * @2017年1月10日下午9:36:5 ...
- MyBatis学习笔记二:MyBatis生产中使用环境搭建
这里是在上一个环境的基础上修改的,这里就不在给出所有的配置,只给出哪里修改的配置 1.修改POJO对象为注解方式 2.创建Dao层接口 package com.orange.dao; import c ...
- mybatis学习笔记(四)-- 为实体类定义别名两种方法(基于xml映射)
下面示例在mybatis学习笔记(二)-- 使用mybatisUtil工具类体验基于xml和注解实现 Demo的基础上进行优化 以新增一个用户为例子,原UserMapper.xml配置如下: < ...
- Mybatis学习笔记之二(动态mapper开发和spring-mybatis整合)
一.输入映射和输出映射 1.1 parameterType(输入类型) [传递简单类型] 详情参考Mybatis学习笔记之一(环境搭建和入门案例介绍) 使用#{}占位符,或者${}进行sql拼接. [ ...
随机推荐
- 并发编程-concurrent指南-ReadWriteLock-ReentrantReadWriteLock(可重入读写锁)
几个线程都申请读锁,都能获取: import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.ReentrantRea ...
- web前端兼容性问题总结
1. HTML对象获取问题 FireFox:document.getElementById("idName");ie:document.idname或者document.get ...
- CS程序和BS程序文字转语音
一.项目中一直用到了文字转语音的功能,需求也比较简单,就是将一段报警信息通过语音的方式播放出来,之前一直采用CS客户端,利用微软自带的Speech语音播放库就可以完成, 1.1 封装winSpedk类 ...
- SQL Server 触发器和事务
一.触发器 1. 定义 --基本语法 create trigger Trigger_Name on TableName for type --type:insert,update,delete as ...
- JavaScript捕获与冒泡与委托
事件捕获指的是从document到触发事件的那个节点,即自上而下的去触发事件. 相反的,事件冒泡是自下而上的去触发事件. 并不是所有的事件都能冒泡,以下事件不冒泡:blur.focus.load.un ...
- Java - 格式化输出JSON字符串的两种方式
目录 1 使用阿里的fastjson 1.1 项目的pom.xml依赖 1.2 Java示例代码 2 使用谷歌的gson 2.1 项目的pom.xml依赖 2.2 Java示例代码 1 使用阿里的fa ...
- blast2go本地化 mysql_study
mysql yum -y install mysql mysqladmin -uroot -passwd "oebiotech" mysql -uroot -poebiotech ...
- 个人永久性免费-Excel催化剂功能第58波-批量生成单选复选框
插件的最大威力莫过于可以把简单重复的事情批量完全,对日常数据采集或打印报表排版过程中,弄个单选.复选框和用户交互,美观的同时,也能保证到数据采集的准确性,一般来说用原生的方式插入单选.复选框,操作繁琐 ...
- [springboot] 搭建项目及单元测试
本文纯属记录自己学习的过程以及相关使用操作,使用工具Idea2018. 1.创建项目: -- 目录结构 2.配置文件 3.pom文件 4.创建测试类并启动项目 package com.zr.dem ...
- HashMap源码之resize
final Node<K,V>[] resize() { //创建一个Node数组用于存放table中的元素, Node<K,V>[] oldTab = table; //获取 ...