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点滴积累相关推荐

  1. 源于十年来的点滴积累——《变革中的思索》印行出版

    源于归国十年来的点滴积累, 集结成书的<变革中的思索>,日前由电子工业出版社刊印出版. 这本书共有五个章节,分别是解码创新.中国智造.管理心得.我和微软.心灵记忆--前三章偏重技术,更多理 ...

  2. Vue项目开发中的点滴积累系列文章

    题记 -- 严于律己,精于行动,点滴积累,着眼未来,你也许不负青春 Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的渐进式框架 本文章 记录从基础入门到实际项目开发中的点点 ...

  3. 【mysql】点滴积累

    一,replace mysql 中的replace 函数直接替换mysql 数据库中某字段中的特定字符串,不再需要自己写函数去替换,用起来很方便 格式:UPDATE table_name set  f ...

  4. 2022年终总结:点滴积累让我不再迷茫

    今年是开始写作的第二年,如果说第一年是起步的话,今年就是开始有了一些小收获了,通过点滴积累让我知道积累的充实感,通过一点一点粉丝或阅读量的积累,增加写作的自信. 今年的收获 首先看一下今年的阅读量和粉 ...

  5. 点滴积累-从object中取值

    问题 很多人在编程中可能会遇到这样的问题,返回一个object对象,怎么取其中的值 解决方案 一般获得的值都需要转换成字符串对象.如果Object中只有一个值,直接转换就可以.多个值的情况下怎么获取呢 ...

  6. 点滴积累--工作总结

    工作又进入到一个新的阶段,开始新的启程,再次接触新的报表,熟悉新的开发流程,一点一点的积累在报表上的开发线路. 其实现在回想,过去的这四个月很充实,但乐在其中,每天早饭后直接步行到公司,按着前一天规划 ...

  7. oracle以查询多括号报错,oracle点滴积累

    文章已移至新博客:http://www.youzitool.com/index/detail/id/24.html 本文主要对oracle的一些常用或易犯错的知识点进行积累总结,根据工作情况将不断更新 ...

  8. 点滴积累【C#】---检验编号在本表中自动生成,与其他表无关

    检验编号在本表中自动生成,与其他表无关 效果: 描述:在本表中自动生成编号,与其他表无关. 调用: 1 protected void Page_Load(object sender, EventArg ...

  9. 点滴积累【C#】---初始页面自动给站点名称赋值

    初始页面自动给站点名称赋值 效果: 说明:点击进入添加页面时,Textbox文本框中自动给站点名称赋值 代码: 1 private string userzdmc; 2 public string U ...

最新文章

  1. hexo+markdown添加本地图片无法显示
  2. 启动两个Tomcat的方法
  3. Linux学习总结(14)——Linux权限控制
  4. vc6.0 绘制散点图_vc有关散点图的一切
  5. DataGridView里的Checkbox全选问题解决了!
  6. 笔记本电脑如何强制关机_笔记本按电源按钮不能关机只是关闭屏幕的解决办法...
  7. Android中文乱码彻底解决
  8. python免费课程全套-如何获取免费python课程?
  9. 深度学习知识点全面总结
  10. BZOJ 1012 - 树状数组+维护最大值 / 单调栈+二分 / 暴力(伪单调队列) / 线段树...
  11. java dbutil_Java:IO流,增删改查,配置文件,预处理后的DBUtils,含个人详细总结【诗书画唱】...
  12. 功能1 -- 顶部导航栏和返回顶部效果
  13. consonant combination
  14. 三维动画制作参考文献推荐汇总
  15. 三国志战略版:北定中原剧本个性加点指引
  16. NC系统销售业务说明
  17. 第二证券|七位投资专家指点2023 战略性看好A股 市场将提供更多机会
  18. [dpdk] TSC , HPET, Timer, Event Timer,RDTSCP
  19. Ubuntu(linux)添加系统证书信任
  20. QQ好友列表树形列表简单实现方式

热门文章

  1. java unsafe获取指针_【实战Java高并发程序设计 1】Java中的指针:Unsafe类
  2. php+下载+网路错误,下载zip文件“网络错误失败”(PHP / NGINX)
  3. html5考试总结300字,期中考心得300字5
  4. 循环爬取图片_Java爬取简单的网页内容和图片
  5. 【机器学习入门】(5) 决策树算法实战:sklearn实现决策树,实例应用(沉船幸存者预测)附python完整代码及数据集
  6. 基于ORB-SLAM2可持续保存地图的扩展方案
  7. 【新】欢庆网自动搜索请柬console方法,面对多种网站改版的情况
  8. Ubuntu 14.04上安装WineTMQQ2013麒麟版
  9. Blender车辆绑定动画制作视频教程
  10. 贪心:assign cookies分糖果