【收藏】MyBatis 常用语法汇总

网友投稿 590 2022-05-30

一、MyBatis介绍

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

二、MyBatis优点:

简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。

灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。

解除sql与程序代码的耦合:通过提供DAL层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。

提供映射标签,支持对象与数据库的orm字段关系映射

提供对象关系映射标签,支持对象关系组建维护

【收藏】MyBatis 常用语法汇总

提供xml标签,支持编写动态sql。

三、MyBatis缺点:

编写SQL语句时工作量很大,尤其是字段多、关联表多时,更是如此。

SQL语句依赖于数据库,导致数据库移植性差,不能更换数据库。

框架还是比较简陋,功能尚有缺失,虽然简化了数据绑定代码,但是整个底层数据库查询实际还是要自己写的,工作量也比较大,而且不太容易适应快速数据库修改。

二级缓存机制不佳

四、常用语法汇总

resultType 用于返回值只有一个字段的类型,resultMap 用于返回值有多个字段的类型。

实体查询条件一般是指提取出公共的搜索条件,以便多次复用。

AND id = #{example.id} AND name = #{example.name} AND doccode = #{example.doccode} AND telno = #{example.telno}

查询字段名,需要返回的字段信息,提取出来复用,包含基本的和指定字段。一般是使用指定字段,以提高查询效率。

id, name, doccode, telno

主键查询,根据主键查询相关对象信息。

新增数据,并返回主键信息,方式一:使用useGeneratedKeys=“true” 和keyProperty=“id”。

insert into user_info id, name, doccode, telno, #{id}, #{name,jdbcType=VARCHAR}, #{doccode}, #{telno,jdbcType=VARCHAR},

新增数据,并返回主键信息,方式二:使用selectKey。

insert into user_info name, doccode, telno, #{userinfo.name,jdbcType=VARCHAR}, #{userinfo.doccode,jdbcType=VARCHAR}, #{userinfo.telno,jdbcType=VARCHAR}, SELECT id FROM user_info ORDER BY id DESC LIMIT 0,1

根据对象更新数据信息

update user_info name = #{userinfo.name,jdbcType=VARCHAR}, doccode = #{userinfo.doccode}, telno = #{userinfo.telno,jdbcType=VARCHAR}, where id = #{userinfo.id}

批量插入数据,以List为例。

insert into user_info values (#{item.name,jdbcType=VARCHAR},#{item.doccode,jdbcType=VARCHAR}, #{item.telno,jdbcType=VARCHAR})

批量更新数据,以List为例。

update user_info set name= null where id in #{id}

批量删除数据,以List为例。

delete from user_info where id in #{id}

继承map,可查多项个实体

结语

好了,以上就是MyBatis 常用语法汇总 ,感谢您的阅读,希望您喜欢,如对您有帮助,欢迎。如有不足之处,欢迎评论指正。下次见。

MyBatis SQL

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:HBase 读写过程中的线程池模型原理实现
下一篇:100个最常问的JavaScript面试问答-第1部分
相关文章