mybatis_SQL映射(1)
文章摘录自:http://blog.csdn.net/y172158950/article/details/17258377
1. select的映射
- <select id="selectPerson" parameterType="int" resultType="hashmap">
- select id, name, sex, updateTime from person where id =#{id};
- </select>
a) #{id}:创建预编译语句参数,占位符
b) parameterType:参数的类型,int类型
c)resultType:返回的结果集,封装为hashMap
- public Map<String, Object> selectPersonById(int id) {
- SqlSession session = DbFactory.getInstance().openSession(); //单例SqlSessionFactory工厂
- Map<String, Object> m = (Map<String, Object>) session.selectOne("com.yjq.entity.Person.selectPerson", id);
- session.commit();
- session.close();
- return m;
- }
- //output
- {id=4, sex=f, NAME=zql, updateTime=2013-12-10 14:18:11.0, SEX=f, name=zql, ID=4, UPDATETIME=2013-12-10 14:18:11.0}
d) 结果集为啥有大小写的key2份?神奇的mybatis啊。
2. insert,update,delete的映射
- <insert id="insertPerson" parameterType="com.yjq.entity.Person" useGeneratedKeys="true" keyProperty="id"> <!-- 将自增主键生成的值回写到对象 -->
- insert into person(name, sex, updateTime) values(#{name}, #{sex}, #{updateTime});
- </insert>
- <delete id="deletePerson" parameterType="int">
- delete from person where id=#{id};
- </delete>
- <update id="updatePerson" parameterType="com.yjq.entity.Person">
- update person set name=#{name}, sex=#{sex}, updateTime=#{updateTime} where id=#{id};
- </update>
a) parameterType="com.yjq.entity.Person":对象参数,#{name}表示Person对象的name属性。
b) useGeneratedKeys="true" keyProperty="id":只存在于insert命令,写这2个参数会将主键自增长的值回写到传入的参数对象。
- public Person insertPerson(Person p) {
- SqlSession session = DbFactory.getInstance().openSession();
- session.insert("com.yjq.entity.Person.insertPerson", p);
- session.commit();
- session.close();
- return p;
- }
- PersonDao dao = new PersonDao();
- Person p = new Person();
- p.setName("zql");
- p.setSex("f");
- p.setUpdateTime(new Date());
- System.out.println("------" + p.getId());
- dao.insertPerson(p);
- System.out.println(p.getId());
- //output(insert前id未赋值,insert后id=7)
- ------0
- 7
c) 返回值:insert,update,delete方法均返回int参数,表示操作了多少条数据
- int result = session.update("com.yjq.entity.Person.updatePerson", p);
d) 假设数据库不支持自增id,mybatis可以生成随机主键
- <insert id="insertPerson2" parameterType="com.yjq.entity.Person">
- <selectKey keyProperty="id" resultType="int" order="BEFORE"> <!-- 生成随机id数 -->
- select CONVERT(RAND()*1000000,SIGNED) a from dual;
- </selectKey>
- insert into person(id, name, sex, updateTime) values(#{id}, #{name}, #{sex}, #{updateTime});
- </insert>
转载于:https://www.cnblogs.com/haimishasha/p/5710517.html
mybatis_SQL映射(1)相关推荐
- mybatis_SQL映射(2)
文章摘录自:http://blog.csdn.net/y172158950/article/details/17258377 1. sql的重用:定义一个sql片段,可在任何SQL语句中重用该片段. ...
- iBatis iterate元素使用方法详解=
→阿童沐 <iterate property="" /*可选, 从传入的参数集合中使用属性名去获取值, 这个必须是一个List类型, 否则会出现OutofRangeExcep ...
- 端口映射问题:Bad Request This combination of host and port requires TLS.
错误信息: Bad Request This combination of host and port requires TLS. 遇到上面的错误信息:如果是通过域名访问,则该域名后配置的转发端口映射 ...
- Docker 入门系列(5)- Docker 端口映射(映射所有IP地址、映射到指定地址和指定端口、映射指定地址任意端口、查看映射端口配置)
端口映射 映射容器内应用的服务端口到本地宿主主机 1. 从外部访问容器应用 在启动容器的时候,如果不指定对应的参数,在容器外部是无法通过网络来访问容器内的网络应用和服务的.当容器中运行一些网络应用,要 ...
- pandas dataframe 字符映射为数字
在机器学习中对于有序的类别型变量可以不采用onehot编码,直接使用有序数字代替即可,这个目的可以在pandas中使用map方法实现. import pandas as pd 创建数据框 raw_da ...
- LeetCode简单题之解码字母到整数映射
题目 给你一个字符串 s,它由数字('0' - '9')和 '#' 组成.我们希望按下述规则将 s 映射为一些小写英文字符: 字符('a' - 'i')分别用('1' - '9')表示. 字符('j' ...
- 硬件专业化和软件映射的敏捷框架
硬件专业化和软件映射的敏捷框架 概述 随着摩尔定律接近尾声,设计专用硬件及将应用程序映射到专用硬件的软件,都是很有前途的解决方案.硬件设计决定了峰值性能,软件也很重要,决定了实际性能.硬件/软件(HW ...
- 2021年大数据常用语言Scala(二十三):函数式编程 扁平化映射 flatMap
目录 扁平化映射 | flatMap 定义 案例 扁平化映射 flatMap 扁平化映射也是将来用得非常多的操作,也是必须要掌握的. 定义 可以把flatMap,理解为先map,然后再flatten ...
- 2021年大数据常用语言Scala(二十二):函数式编程 映射 map
目录 映射 | map 用法 案例一 案例二 映射 map 集合的映射操作是将来在编写Spark/Flink用得最多的操作,是我们必须要掌握的.因为进行数据计算的时候,就是一个将一种数据类型转换为另 ...
最新文章
- 四参数坐标转换c++_手持GPS的三参数计算方法
- 一秒钟就破解!2020年最烂密码出炉,看看你的上榜没?
- 第4代白盒測试方法介绍--理论篇
- 地质灾害防治条例释义的摘要
- Java 设计模式之原型模式
- 【SpringBoot】Spring boot 多数据源 no transaction is in progress EntityManager flush
- FZEasyFile的使用
- python实现api server,初学python,准备学习做个restful api server,现在有些困惑
- eclipse安装activiti 工作流插件
- 5分钟搞定内存字节对齐
- 项目二:2020年华为软件精英挑战赛
- linux给wps安装字体
- Python三目表达式
- 【学习记录】【python】【tkinter】自学tkinter的简要记录
- 孤军奋战的百合网 下一城会在哪?
- 写给新人程序猿的15点建议:苦逼程序员的辛酸反省与总结
- 华文行楷字帖欣赏_毛笔行书欣赏,华文行楷在线转换,偏旁部首练字帖,
- python输入素数为什么要先判断是否是素数再用欧拉筛法
- 人心本无染,心静自然清 ——赞“落梅”
- Python 每天定时运行某程序代码
热门文章
- 计算机组成原理中wr是什么,计算机组成原理复习例题.doc
- python 解压js压缩的图片_20行Python代码,无损压缩千百张图片!Python有多强!就不用说了...
- java的应用程序开发_开发一个Java应用程序(1)
- java中的与或非_与或非 · java development · 看云
- java面向对象各章节教程_第二部分java面向对象编程第08章集合框架List1章节.ppt...
- try except python3.7_python3.X中try/except
- javascript字典中添加数组_在javascript中合并两个字典数组
- 纯jsp实现评论功能_自己实现的java手写tomcat
- oracle定时任务会漂移,定时任务与手动执行脚本时的一个重要注意事项
- 元器件大一点好,还是小一点好?