一、MyBatis基本使用,包括xml方式、注解方式、及动态SQL

时间:2022-09-30 20:41:02

一、简介

发展历史:MyBatis 的前 身是 iBATIS。最初侧重于 密码软件的开发 , 后来发展成为一款基于 Java 的持久层框架。

定      位:MyBatis 是一款优秀的支持自定义 SQL 查询、存储过程和高级映射的持久层框架,消除了 几乎所有的 JDBC 代码和参数的手动设置以及结果集的检索 。 MyBatis 可以使用 XML 或注解进 行配置和映射, MyBatis 通过将参数映射到配置的 SQL 形成最终执行的 SQL 语句 ,最后将执行 SQL 的结果映射成 Java对象返回。这样MyBatis的基本使用知识主要就涉及3个部分。入参、返回值、和SQL主题之后我也是按照这个思路来总结的。

特     点:灵活,充分发挥数据库的各种功能。MyBatis没有将Java对象与数据库关联起来,而是将Java方法与SQL语句关联起来。SQL、及返回值的构造就灵活多变了。

      MyBatis的3.0之后提供了接口调用的方式。有意思的是,这些接口不用我们写具体的实现,只需要和xml文件对应上就行。(是通过java动态代理实现的)

二、注意点

这里只展示一些需要注意的问题。分几个部分说明。

一、result

SQL的查询结果到接口的返回值,有两种方式。通过resultMap、resultType。

这个过程涉及到几个要素:

1、SQL结果的字段名称(若有别名则为别名)

2、resultMap的property[对应接口返回值对象的字段名称]

3、resultMap的column[对应SQL结果的字段名称]

4、接口返回值对象字段名称≈resultType,这俩者差不多。

另外要注意:

  1、数据库的数据类型与返回值的字段类型的对应。比如 Java中byte[] 对应数据库的BLOB 、 LONGVARBINARY、数据库兼容的字节流类型。BIgDecimal数据库兼容的 NUMERIC 或 DECIMAL。

  2、由于Java中的基本类型会有默认值,例如当某个类中存在 private in t age;创建这个类时,age会有默认值0。当使用age属性时,它总会有值。因此在某些情况下,便无法实现使 age为null 并且在动态 SQL的部分,如果使用 age != null 进行判断,结果总会为 true,因而会导致很多隐藏的问题。所以,在实体类中不要使用基本类型 。基本类型包括 byte、int、short、long、float、double、char、boolean。

二、parameter

查询参数可以分为三种方式:parameterMap、parameterType、默认没有
一个参数是可以默认没有、多个参数之前使用parameterMap、后来出现了parameterType

一、MyBatis基本使用,包括xml方式、注解方式、及动态SQL的更多相关文章

  1. MyBatis 使用简单的 XML或注解用于配置和原始映射

    MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis .My ...

  2. MyBatis 注解配置及动态SQL

      一.注解配置 目前MyBatis支持注解配置,用注解方式来替代映射文件,但是注解配置还是有点不完善,在开发中使用比较少,大部分的企业还是在用映射文件来进行配置.不完善的地方体现在于当数据表中的字段 ...

  3. hibernate中.hbm.xml和注解方式自动生成数据表的简单实例(由新手小白编写,仅适用新手小白)

    绝逼新手小白,so 请大神指点! 如果真的错的太多,错的太离谱,错的误导了其他小伙伴,还望大神请勿喷,大神请担待,大神请高抬贵嘴......谢谢. 好了,正题 刚接触ssh,今天在搞使用.hbm.xm ...

  4. spring boot整合mybatis基于注解开发以及动态sql的使用

    让我们回忆一下上篇博客中mybatis是怎样发挥它的作用的,主要是三类文件,第一mapper接口,第二xml文件,第三全局配置文件(application.properties),而今天我们就是来简化 ...

  5. MyBatis在注解上使用动态SQL(@select使用if)

    1.用script标签包围,然后像xml语法一样书写 @Select({"<script>", "SELECT * FROM tbl_order", ...

  6. MyBatis进阶--接口代理方式实现Dao 和动态SQL

    MyBatis接口代理方式实现Dao层 接口代理方式-实现规则 传统方式实现Dao层,我们既要写接口.还要写实现类.而MyBatis框架可以帮助我们省略写Dao层接口实现类的步骤.程序员只需要编写接口 ...

  7. mybatis注解开发,动态sql

    在利用mybatis注解开始时,如果没有用到动态sql时,可以直接写 @Select("select * from order") List<XlSubOrder> g ...

  8. JAVAEE——Mybatis第二天:输入和输出映射、动态sql、关联查询、Mybatis整合spring、Mybatis逆向工程

    1. 学习计划 1.输入映射和输出映射 a) 输入参数映射 b) 返回值映射 2.动态sql a) If标签 b) Where标签 c) Sql片段 d) Foreach标签 3.关联查询 a) 一对 ...

  9. Mybatis&period;net与MVC入门配置及联合查询动态SQL拼接和简单事务

    第一次学习Mybatis.net,在博客园也找到好多资料,但是在配置成功之后也遇到了一些问题,尤其是在动态SQl拼接时候,这里把遇到的问题还有自己写的一个Demo贴出来,希望能帮到新手,有不适合的地方 ...

  10. Hibernate映射文件配置&lpar;hbm&period;xml和注解方式&rpar;

    一:通过*.hbm.xml配置实体的实现方式 mappingResources用于指定少量的hibernate配置文件像这样 Xml代码  <property name="mappin ...

随机推荐

  1. 如何在施工物料管理Web系统中处理大量数据并显示

    最近在开发施工物料管理系统,其中涉及大量的物料信息需要管理和汇总,数据量非常庞大.之前尝试自己通过将原始数据,加工处理建模,在后台代码中通过分组.转置再显示到 Web 页面中,但自己编写的代码量非常大 ...

  2. Java获取系统时间

    Java可以通过SimpleDateFormat格式化类对Date进行格式话获取时间. import java.util.*; import java.text.*; public class Tes ...

  3. C&num;操作IIS程序池及站点的创建配置

    最近在做一个WEB程序的安装包:对一些操作IIS进行一个简单的总结:主要包括对IIS进行站点的新建以及新建站点的NET版本的选择,还有针对IIS7程序池的托管模式以及版本的操作:首先要对Microso ...

  4. mybatis实战教程&lpar;mybatis in action&rpar;之九&colon;mybatis 代码生成工具的使用

    mybatis 应用程序,需要大量的配置文件,对于一个成百上千的数据库表来说,完全手工配置,这是一个很恐怖的工作量. 所以mybatis 官方也推出了一个mybatis代码生成工具的jar包. 今天花 ...

  5. Installation and Configuration MySQL Cluster 7&period;2 on CentOS 5 &lpar;include MySQL 5&period;5&rpar;

    Architecture Manager Node mysql-mag1   192.168.1.31 mysql-mag2   192.168.1.32 SQL Node mysql-sql1   ...

  6. jQuery兼容浏览器IE8方法

    在维护公司网站的时候,发现在IE8下jquery会报对象不支持此属性或方法.缺少对象的错误:  在其他浏览器就可以正常运行,当前使用的jquery版本是3.1.1,查资料发现jquery从2.0开始不 ...

  7. 招募:Wiki 文档翻译小伙伴招募

    https://github.com/dotnetcore/CAP/issues/93 为了推进 CAP 的国际化工作,为全球其他 .NET 开发者提供更加良好的文档阅读体验,现在需要对CAP wik ...

  8. CentOS 7 本地安装kubernetes

    环境 : CentOS7 master    192.168.94.11 node1 192.168.94.22 node2 192.168.94.33 关闭防火墙.SElinux 安装包地址 : 链 ...

  9. 【C&num;复习总结】垃圾回收机制&lpar;GC&rpar;1

    摘要:今天我们漫谈C#中的垃圾回收机制,本文将从垃圾回收机制的原理讲起,希望对大家有所帮助. GC的前世与今生 虽然本文是以.NET作为目标来讲述GC,但是GC的概念并非才诞生不久.早在1958年,由 ...

  10. 16、计算1加到100用两个定义值count&equals;1、sum&equals;0

    #!/user/bin/python# -*- coding:utf-8 -*-count = 1sum = 0while count <= 100: sum = sum + count cou ...