文章摘录自:http://blog.csdn.net/y172158950/article/details/17258377

1. select的映射

[java] view plaincopy
  1. <select id="selectPerson" parameterType="int" resultType="hashmap">
  2. select id, name, sex, updateTime from person where id =#{id};
  3. </select>
a) #{id}:创建预编译语句参数,占位符
b) parameterType:参数的类型,int类型
c)resultType:返回的结果集,封装为hashMap
[java] view plaincopy
  1. public Map<String, Object> selectPersonById(int id) {
  2. SqlSession session = DbFactory.getInstance().openSession();  //单例SqlSessionFactory工厂
  3. Map<String, Object> m = (Map<String, Object>) session.selectOne("com.yjq.entity.Person.selectPerson", id);
  4. session.commit();
  5. session.close();
  6. return m;
  7. }
[java] view plaincopy
  1. //output
  2. {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的映射

[java] view plaincopy
  1. <insert id="insertPerson" parameterType="com.yjq.entity.Person" useGeneratedKeys="true" keyProperty="id"> <!-- 将自增主键生成的值回写到对象  -->
  2. insert into person(name, sex, updateTime) values(#{name}, #{sex}, #{updateTime});
  3. </insert>
  4. <delete id="deletePerson" parameterType="int">
  5. delete from person where id=#{id};
  6. </delete>
  7. <update id="updatePerson" parameterType="com.yjq.entity.Person">
  8. update person set name=#{name}, sex=#{sex}, updateTime=#{updateTime} where id=#{id};
  9. </update>
a) parameterType="com.yjq.entity.Person":对象参数,#{name}表示Person对象的name属性。
b) useGeneratedKeys="true" keyProperty="id":只存在于insert命令,写这2个参数会将主键自增长的值回写到传入的参数对象。
[java] view plaincopy
  1. public Person insertPerson(Person p) {
  2. SqlSession session = DbFactory.getInstance().openSession();
  3. session.insert("com.yjq.entity.Person.insertPerson", p);
  4. session.commit();
  5. session.close();
  6. return p;
  7. }
[java] view plaincopy
  1. PersonDao dao = new PersonDao();
  2. Person p = new Person();
  3. p.setName("zql");
  4. p.setSex("f");
  5. p.setUpdateTime(new Date());
  6. System.out.println("------" + p.getId());
  7. dao.insertPerson(p);
  8. System.out.println(p.getId());
[java] view plaincopy
  1. //output(insert前id未赋值,insert后id=7)
  2. ------0
  3. 7
c) 返回值:insert,update,delete方法均返回int参数,表示操作了多少条数据
[java] view plaincopy
  1. int result = session.update("com.yjq.entity.Person.updatePerson", p);
d) 假设数据库不支持自增id,mybatis可以生成随机主键
[java] view plaincopy
  1. <insert id="insertPerson2" parameterType="com.yjq.entity.Person">
  2. <selectKey keyProperty="id" resultType="int" order="BEFORE">  <!-- 生成随机id数 -->
  3. select CONVERT(RAND()*1000000,SIGNED) a from dual;
  4. </selectKey>
  5. insert into person(id, name, sex, updateTime) values(#{id}, #{name}, #{sex}, #{updateTime});
  6. </insert>

转载于:https://www.cnblogs.com/haimishasha/p/5710517.html

mybatis_SQL映射(1)相关推荐

  1. mybatis_SQL映射(2)

    文章摘录自:http://blog.csdn.net/y172158950/article/details/17258377 1. sql的重用:定义一个sql片段,可在任何SQL语句中重用该片段. ...

  2. iBatis iterate元素使用方法详解=

    →阿童沐 <iterate property="" /*可选, 从传入的参数集合中使用属性名去获取值, 这个必须是一个List类型, 否则会出现OutofRangeExcep ...

  3. 端口映射问题:Bad Request This combination of host and port requires TLS.

    错误信息: Bad Request This combination of host and port requires TLS. 遇到上面的错误信息:如果是通过域名访问,则该域名后配置的转发端口映射 ...

  4. Docker 入门系列(5)- Docker 端口映射(映射所有IP地址、映射到指定地址和指定端口、映射指定地址任意端口、查看映射端口配置)

    端口映射 映射容器内应用的服务端口到本地宿主主机 1. 从外部访问容器应用 在启动容器的时候,如果不指定对应的参数,在容器外部是无法通过网络来访问容器内的网络应用和服务的.当容器中运行一些网络应用,要 ...

  5. pandas dataframe 字符映射为数字

    在机器学习中对于有序的类别型变量可以不采用onehot编码,直接使用有序数字代替即可,这个目的可以在pandas中使用map方法实现. import pandas as pd 创建数据框 raw_da ...

  6. LeetCode简单题之解码字母到整数映射

    题目 给你一个字符串 s,它由数字('0' - '9')和 '#' 组成.我们希望按下述规则将 s 映射为一些小写英文字符: 字符('a' - 'i')分别用('1' - '9')表示. 字符('j' ...

  7. 硬件专业化和软件映射的敏捷框架

    硬件专业化和软件映射的敏捷框架 概述 随着摩尔定律接近尾声,设计专用硬件及将应用程序映射到专用硬件的软件,都是很有前途的解决方案.硬件设计决定了峰值性能,软件也很重要,决定了实际性能.硬件/软件(HW ...

  8. 2021年大数据常用语言Scala(二十三):函数式编程 扁平化映射 flatMap

    目录 扁平化映射 | flatMap 定义 案例 扁平化映射  flatMap 扁平化映射也是将来用得非常多的操作,也是必须要掌握的. 定义 可以把flatMap,理解为先map,然后再flatten ...

  9. 2021年大数据常用语言Scala(二十二):函数式编程 映射 map

    目录 映射 | map 用法 案例一 案例二 映射  map 集合的映射操作是将来在编写Spark/Flink用得最多的操作,是我们必须要掌握的.因为进行数据计算的时候,就是一个将一种数据类型转换为另 ...

最新文章

  1. 四参数坐标转换c++_手持GPS的三参数计算方法
  2. 一秒钟就破解!2020年最烂密码出炉,看看你的上榜没?
  3. 第4代白盒測试方法介绍--理论篇
  4. 地质灾害防治条例释义的摘要
  5. Java 设计模式之原型模式
  6. 【SpringBoot】Spring boot 多数据源 no transaction is in progress EntityManager flush
  7. FZEasyFile的使用
  8. python实现api server,初学python,准备学习做个restful api server,现在有些困惑
  9. eclipse安装activiti 工作流插件
  10. 5分钟搞定内存字节对齐
  11. 项目二:2020年华为软件精英挑战赛
  12. linux给wps安装字体
  13. Python三目表达式
  14. 【学习记录】【python】【tkinter】自学tkinter的简要记录
  15. 孤军奋战的百合网 下一城会在哪?
  16. 写给新人程序猿的15点建议:苦逼程序员的辛酸反省与总结
  17. 华文行楷字帖欣赏_毛笔行书欣赏,华文行楷在线转换,偏旁部首练字帖,
  18. python输入素数为什么要先判断是否是素数再用欧拉筛法
  19. 人心本无染,心静自然清 ——赞“落梅”
  20. Python 每天定时运行某程序代码

热门文章

  1. 计算机组成原理中wr是什么,计算机组成原理复习例题.doc
  2. python 解压js压缩的图片_20行Python代码,无损压缩千百张图片!Python有多强!就不用说了...
  3. java的应用程序开发_开发一个Java应用程序(1)
  4. java中的与或非_与或非 · java development · 看云
  5. java面向对象各章节教程_第二部分java面向对象编程第08章集合框架List1章节.ppt...
  6. try except python3.7_python3.X中try/except
  7. javascript字典中添加数组_在javascript中合并两个字典数组
  8. 纯jsp实现评论功能_自己实现的java手写tomcat
  9. oracle定时任务会漂移,定时任务与手动执行脚本时的一个重要注意事项
  10. 元器件大一点好,还是小一点好?