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>
mybatis_SQL映射(1)的更多相关文章
- mybatis_SQL映射(4)鉴别器
摘录自:http://blog.csdn.net/y172158950/article/details/17505739 鉴别器:有时一个单独的数据库查询也许返回很多不同(但是希望有些关联)数据类型的 ...
- mybatis_SQL映射(3)
文章摘录自:http://blog.csdn.net/y172158950/article/details/17304645 1. 表关联 a) 嵌套查询(传说中的1+N问题) <resultM ...
- mybatis_SQL映射(2)
文章摘录自:http://blog.csdn.net/y172158950/article/details/17258377 1. sql的重用:定义一个sql片段,可在任何SQL语句中重用该片段. ...
- Hibernatel框架关联映射
Hibernatel框架关联映射 Hibernate程序执行流程: 1.集合映射 需求:网络购物时,用户购买商品,填写地址 每个用户会有不确定的地址数目,或者只有一个或者有很多.这个时候不能把每条地址 ...
- hibernate多对多关联映射
关联是类(类的实例)之间的关系,表示有意义和值得关注的连接. 本系列将介绍Hibernate中主要的几种关联映射 Hibernate一对一主键单向关联Hibernate一对一主键双向关联Hiberna ...
- Dapper逆天入门~强类型,动态类型,多映射,多返回值,增删改查+存储过程+事物案例演示
Dapper的牛逼就不扯蛋了,答应群友做个入门Demo的,现有园友需要,那么公开分享一下: 完整Demo:http://pan.baidu.com/s/1i3TcEzj 注 意 事 项:http:// ...
- ElasticSearch 5学习(9)——映射和分析(string类型废弃)
在ElasticSearch中,存入文档的内容类似于传统数据每个字段一样,都会有一个指定的属性,为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成字符串值,Elasticsearc ...
- .NET平台开源项目速览(14)最快的对象映射组件Tiny Mapper
好久没有写文章,工作甚忙,但每日还是关注.NET领域的开源项目.五一休息,放松了一下之后,今天就给大家介绍一个轻量级的对象映射工具Tiny Mapper:号称是.NET平台最快的对象映射组件.那就一起 ...
- ASP.NET Core的路由[1]:注册URL模式与HttpHandler的映射关系
ASP.NET Core的路由是通过一个类型为RouterMiddleware的中间件来实现的.如果我们将最终处理HTTP请求的组件称为HttpHandler,那么RouterMiddleware中间 ...
随机推荐
- Java求循环节长度
两个整数做除法,有时会产生循环小数,其循环部分称为:循环节.比如,11/13=6=>0.846153846153..... 其循环节为[846153] 共有6位.下面的方法,可以求出循环节的长 ...
- Javascript流程控制
Javascript流程控制 1.条件语句 (1)if(exp)执行一句代码 (2)if(exp){执行代码段;} (3)if(exp){exp为true执行代码段}else{exp为false执行的 ...
- 每天学一点Docker(5)——了解Docker架构
Docker的核心组件: 1.Docker客户端 - Client 2.Docker服务器 - Docker deamon 3.Docker镜像 - Image 4.仓库 - Registry 5.D ...
- CSS3的动画属性
transition.animation和transform是CSS3中三个制作动画的重要属性,本篇文章主要对其进行学习了解. 一.transition transition允许css的属性值在一定的 ...
- mac 安装mysql特种报错的对应解决方式
参考 :http://www.jianshu.com/p/776e72742c6e 原文废话太多了, 还是看我的好了. 配置环境变量 echo "export PATH=$PATH:/usr ...
- 接口返回数据Json格式处理
有这样一个页面 , 用来显示用户的账户记录数据,并且需要显示每个月的 收入 支出合计 ,在分页的时候涉及到一些问题,需要对返回的Json格式做处理,处理起来比较麻烦,后端返回的Json数据格式形式如下 ...
- 【Python3之函数对象】
函数对象 函数(Function)作为程序语言中不可或缺的一部分,但函数作为第一类对象(First-Class Object)却是 Python 函数的一大特性. 那到底什么是第一类对象(First- ...
- 《vue.js2.0从入门到放弃》学习之路
原文地址: Vue.js2.0从入门到放弃---入门实例(一):http://blog.csdn.net/u013182762/article/details/53021374 Vue.js2.0从入 ...
- C#winform程序关闭计算机的正确姿势
/// <summary> /// 计算机电源控制类 /// </summary> public class EnvironmentCheckClass { [DllImpor ...
- [转]python变量作用域的有趣差别
func()里 可以访问全局变量i,但不能给i重新赋值. i = 1 def func(): print( i + 1) func() # 2 用global声明后,可以给i重新赋值. i = 1 d ...