MyBatis点滴积累
MyBatis在使用中不知不觉积累了很多经验
1.#和$
MyBatis/Ibatis中#和$的区别
1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id".
2. $将传入的数据直接显示生成在sql中。如:order by $user_id$,如果传入的值是111,那么解析成sql时的值为order by user_id, 如果传入的值是id,则解析成的sql为order by id.
3. #方式能够很大程度防止sql注入。
4.$方式无法防止Sql注入。
5.$方式一般用于传入数据库对象,例如传入表名.
6.一般能用#的就别用$.
ps:在使用mybatis中还遇到<![CDATA[]]>的用法,在该符号内的语句,将不会被当成字符串来处理,而是直接当成sql语句,比如要执行一个存储过程。
2.if
引用where 1=1 再
<if test="user!=null"> and user =#{user} </if>
更好的方式是
<select id="findActiveBlogLike" resultType="Blog">SELECT * FROM BLOG<where><if test="state != null">and state = #{state}</if></where>
</select>
参考:
mybatis 使用经验小结
3.获得数据库返回值
说明,首先sqlmapper里这两种写法都可以
<insert id="addTest" parameterType="blog.csdn.unix21.Bean"><selectKey resultType="Integer" keyProperty="id" order="AFTER" >SELECT @@IDENTITY AS id</selectKey>insert into test_hm (name,city)values (#{name,jdbcType=VARCHAR},#{city,jdbcType=VARCHAR})
</insert>
<insert id="addTest1" parameterType="blog.csdn.unix21.Bean" useGeneratedKeys="true" keyProperty="id">insert into test_hm (name,city)values (#{name,jdbcType=VARCHAR},#{city,jdbcType=VARCHAR})
</insert>
insert代码
public int addTest(TestBean t) throws Exception { String resource = "conf_test.xml";//加载mybatis 的配置文件(它也加载关联的映射文件)Reader reader = Resources.getResourceAsReader(resource);//构建sqlSession 的工厂SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);//创建能执行映射文件中sql 的sqlSessionSqlSession session = sessionFactory.openSession();//映射sql 的标识字符串String statement = "sqlMapper.addTest1";//执行查询返回一个唯一user 对象的sqlint r=0;try {r = session.insert(statement, t);session.commit();} finally {session.close();}System.out.println(r);return r;
注意:需要commit和close.
数据库自增的id返回在bean里了,不能直接从session.insert(statement, t)获取,这个获取的是数据库改版的行数,如果只insert那么这个返回的是1。
参考:
MyBatis魔法堂:Insert操作详解(返回主键、批量插入)
4.使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件
Mybatis属于半自动ORM,在使用这个框架中,工作量最大的就是书写Mapping的映射文件,由于手动书写很容易出错,我们可以利用Mybatis-Generator来帮我们自动生成文件。
关于Mybatis-Generator的下载可以到这个地址:https://github.com/mybatis/generator/releases
参考:http://www.cnblogs.com/lichenwei/p/4145696.html
MyBatis点滴积累相关推荐
- 源于十年来的点滴积累——《变革中的思索》印行出版
源于归国十年来的点滴积累, 集结成书的<变革中的思索>,日前由电子工业出版社刊印出版. 这本书共有五个章节,分别是解码创新.中国智造.管理心得.我和微软.心灵记忆--前三章偏重技术,更多理 ...
- Vue项目开发中的点滴积累系列文章
题记 -- 严于律己,精于行动,点滴积累,着眼未来,你也许不负青春 Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框架 本文章 记录从基础入门到实际项目开发中的点点 ...
- 【mysql】点滴积累
一,replace mysql 中的replace 函数直接替换mysql 数据库中某字段中的特定字符串,不再需要自己写函数去替换,用起来很方便 格式:UPDATE table_name set f ...
- 2022年终总结:点滴积累让我不再迷茫
今年是开始写作的第二年,如果说第一年是起步的话,今年就是开始有了一些小收获了,通过点滴积累让我知道积累的充实感,通过一点一点粉丝或阅读量的积累,增加写作的自信. 今年的收获 首先看一下今年的阅读量和粉 ...
- 点滴积累-从object中取值
问题 很多人在编程中可能会遇到这样的问题,返回一个object对象,怎么取其中的值 解决方案 一般获得的值都需要转换成字符串对象.如果Object中只有一个值,直接转换就可以.多个值的情况下怎么获取呢 ...
- 点滴积累--工作总结
工作又进入到一个新的阶段,开始新的启程,再次接触新的报表,熟悉新的开发流程,一点一点的积累在报表上的开发线路. 其实现在回想,过去的这四个月很充实,但乐在其中,每天早饭后直接步行到公司,按着前一天规划 ...
- oracle以查询多括号报错,oracle点滴积累
文章已移至新博客:http://www.youzitool.com/index/detail/id/24.html 本文主要对oracle的一些常用或易犯错的知识点进行积累总结,根据工作情况将不断更新 ...
- 点滴积累【C#】---检验编号在本表中自动生成,与其他表无关
检验编号在本表中自动生成,与其他表无关 效果: 描述:在本表中自动生成编号,与其他表无关. 调用: 1 protected void Page_Load(object sender, EventArg ...
- 点滴积累【C#】---初始页面自动给站点名称赋值
初始页面自动给站点名称赋值 效果: 说明:点击进入添加页面时,Textbox文本框中自动给站点名称赋值 代码: 1 private string userzdmc; 2 public string U ...
最新文章
- hexo+markdown添加本地图片无法显示
- 启动两个Tomcat的方法
- Linux学习总结(14)——Linux权限控制
- vc6.0 绘制散点图_vc有关散点图的一切
- DataGridView里的Checkbox全选问题解决了!
- 笔记本电脑如何强制关机_笔记本按电源按钮不能关机只是关闭屏幕的解决办法...
- Android中文乱码彻底解决
- python免费课程全套-如何获取免费python课程?
- 深度学习知识点全面总结
- BZOJ 1012 - 树状数组+维护最大值 / 单调栈+二分 / 暴力(伪单调队列) / 线段树...
- java dbutil_Java:IO流,增删改查,配置文件,预处理后的DBUtils,含个人详细总结【诗书画唱】...
- 功能1 -- 顶部导航栏和返回顶部效果
- consonant combination
- 三维动画制作参考文献推荐汇总
- 三国志战略版:北定中原剧本个性加点指引
- NC系统销售业务说明
- 第二证券|七位投资专家指点2023 战略性看好A股 市场将提供更多机会
- [dpdk] TSC , HPET, Timer, Event Timer,RDTSCP
- Ubuntu(linux)添加系统证书信任
- QQ好友列表树形列表简单实现方式
热门文章
- java unsafe获取指针_【实战Java高并发程序设计 1】Java中的指针:Unsafe类
- php+下载+网路错误,下载zip文件“网络错误失败”(PHP / NGINX)
- html5考试总结300字,期中考心得300字5
- 循环爬取图片_Java爬取简单的网页内容和图片
- 【机器学习入门】(5) 决策树算法实战:sklearn实现决策树,实例应用(沉船幸存者预测)附python完整代码及数据集
- 基于ORB-SLAM2可持续保存地图的扩展方案
- 【新】欢庆网自动搜索请柬console方法,面对多种网站改版的情况
- Ubuntu 14.04上安装WineTMQQ2013麒麟版
- Blender车辆绑定动画制作视频教程
- 贪心:assign cookies分糖果