【串线篇】SQL映射文件select简单查询标签
一、参数(Parameters)传递
单个参数
基本类型:取值#{hahaha}随便写
多个参数
<!-- public Employee getEmpById(Integer id,String empName);
取值#{参数名}就无效了
可用0,1参数的索引或param1,param2(第几个参数就paramN)
原因:任意多个参数,都会被MyBatis重新包装成一个Map传入。Map的key是param1,param2,0,1…,值就是参数的值。
命名参数
在dao里写方法时为参数使用@Param起一个名字,MyBatis就会将这些参数封装进map中,key就是我们自己指定的名字
POJO
当这些参数属于我们业务POJO时,我们直接传递POJO,#{POJO的属性名}
注意千万不必加.
Map
我们也可以在写dao时将多个参数封装为map,直接传递
在测试时自己制定参数名
map.put(”id”,1);
map.put(“empName”,”admin”);
二、参数取值符号
#{属性名}:是参数预编译的方式,参数的位置都是用?代替,参数都是后来预编译设置进去的,安全,不会有sql注入问题(id=1or1=1or and empname=” admin”,这种情况如果不使用预编译方式而采用直接拼串获取到的参数会被当成永真条件)。但是表名位置不支持参数预编译
${属性名}:不是参数预编译的方式,而是直接和sql语句进行拼串,不安全
【总结】一般都是使用#{属性名},但在一些不支持参数预编译的地方要用${参数名}
三、查询返回list
接口方法写public List<Employee> getAllEmps()
标签仍然resultType=“com.atguigu.bean.Employee”
四、查询返回map
1)查询单条记录
接口方法写public Map<String Object> getEmpByIdReturnMap(Integer id)
标签resultType=“map“
比如查出一条
id empname gender email login_account
------ ------- ------ ------------- ---------------
1 admin 0 admin@qq.com (NULL)
以列名作为key,值作为value。注意区分map与list
2)查询多条记录
@MapKey(“id“)
接口方法写public Map< Integer Employee > getAllEmpsReturnMap()
标签resultType=“com.atguigu.bean.Employee “
key是一条记录的主键,一个对象Employee作为value。注意区分map与list
最新文章
- eclipse的几个快捷键
- 关闭ctrl+shift+d截图
- SQL server基础知识(表操作、数据约束、多表链接查询)
- Spring知识点
- WAMP 403 Forbidden禁止访问 的解决办法
- linux下启动dbca或netmgr类的图形界面报错解决
- 炼狱—Bug集中营
- 用WidgeDuino创建一个SCADA(监控与数据採集)系统
- ecshop判断搜索引擎是否为蜘蛛
- 阻碍android程序员发展的几个原因
- 关于jave在oracle驱动下事务提交与回滚问题
- MVC3.0+knockout.js+Ajax 实现简单的增删改查
- PHP垃圾回收机制理解
- 利用canvas 导出图片
- SQL基础学习_01_数据库和表
- css控制UL LI 的样式详解(推荐)
- 【LOJ#2402】[THUPC2017]天天爱射击(整体二分)
- Linux:去除每一行行首的空格
- postgresql 触发器 更新操作
- Sql Server数据库之identity(自增)
热门文章
- php中substr_compare()区分大小写吗
- [luogu]P1463 [SDOI2005]反素数ant[dfs][数学][数论]
- 【HDOJ6699】Block Breaker(模拟)
- [CSP-S模拟测试]:sum(数学+莫队)
- php str_replace与substr_replace的区别
- win7系统下安装Splash。
- 42 Bing Search Engine Hacks
- Hive presto和hive时间格式转换
- statistics——数学统计函数
- Mybatis入门之MyBatis项目案例