博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mybatis光速入门(配置文件模块)
阅读量:2504 次
发布时间:2019-05-11

本文共 2215 字,大约阅读时间需要 7 分钟。

配置文件/代码模块

在这里插入图片描述

mybatis的dao层实现方式 (Mapper代理模式)
使用动态代理 : 动态生成dao的实现类,mybatis推荐dao接口取名以mapper
要求 : SQL映射文件namespace写法必须与对应的mapper接口的包名.接口名
SQL映射文件的statement(SQL语句)的id与对应的方法名一致
statement的paramterType的数据类型与对应方法的参数类型一致

Mybatis之Mapper接口的开发方式

该方式开发,不需要写dao层的实现类,而是mybatis根据映射文件等信息对接口进行jdk动态代理生成代理类来实现接口中的方法,因此,采用这种方式,我们只需要编辑接口,而不需要去写实现。

例如 :

根据id查询用户。

Mapper开发代理规范

1、mapper接口的全限定名要和mapper映射文件的namespace值一致。
2、mapper接口的方法名称要和mapper映射文件的statement的id一致。
3、mapper接口的方法参数类型要和mapper映射文件的statement的parameterType的值一致,而且它的参数是一个。
4、mapper接口的方法返回值类型要和mapper映射文件的statement的resultType的值一致。

mybatis config文件

标签介绍 : <typeAliases></typeAliases>
typeAliases 类型别名是为 Java 类型设置一个短的名字。就是取别名。
它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余。例格式:

如:

OK,下一标签

映射器(mappers)
前面我们讲到Mybatis已经帮我们封装好链接数据库开启/关闭资源,而且Mybatis的配置文件与Java方法的映射也已经封装好我们只需要书写相关的配置文件,既然这么方便,那它也一定有自己的映射规则,现在我们现在就要定义 SQL 映射语句了。首先我们需要告诉 MyBatis 映射到哪里去找到这些语句。

格式 : 
例如 :
以上的意思是告诉Mybatis映射到xml包下的TestMapper.xml文档

Mapper XML 文件模块

MyBatis 的亮点就是在于它的映射语句,也是它的优势所在。映射器的 XML 文件就显得相对简单。和JDBC比起来,你会立即发现省掉了将近 95% 的代码。MyBatis 就是针对 SQL 构建的,并且比普通的方法做的更好。
以下是Mapper的元素介绍:

(很少用) cache – 给定命名空间的缓存配置。

(很少用) cache-ref – 其他命名空间缓存配置的引用。
resultMap – 是最常用功能最多最复杂也是最强大的元素,用来描述如何从数据库结果集中来加载对象。
sql – 可被其他语句引用的可重用语句块。
(增)insert – 映射插入语句
(改)update – 映射更新语句
(删)delete – 映射删除语句
(查)select – 映射查询语句

最复杂的resultMap

resultMap

constructor - 用于在实例化类时,注入结果到构造方法中

~~(很少用)~~idArg - ID 参数;标记出作为 ID 的结果可以帮助提高整体性能
~~(很少用)~~arg - 将被注入到构造方法的一个普通结果
id – 一个 ID 结果;标记出作为 ID 的结果可以帮助提高整体性能
result – 注入到字段或 JavaBean 属性的普通结果
~~(很少用)~~association – 一个复杂类型的关联;许多结果将包装成这种类型
嵌套结果映射 – 关联可以指定为一个 resultMap 元素,或者引用一个
collection – 一个复杂类型的集合嵌套结果映射 – 集合可以指定为一个 resultMap 元素,或者引用一个
discriminator – 使用结果值来决定使用哪个 resultMap.

#{} ${}的区别 :

#{} 只是替换Sql语句中的’?’,也就是说PreparedStatement使用占位符去替换你传入的参数,可以防止sql注入。安全性高
是 进 行 简 单 的 字 符 串 拼 接 , 相 当 于 s q l 语 句 中 的 S t a t e m e n t , 使 用 字 符 串 去 拼 接 s q l ; {} 是进行简单的字符串拼接,相当于sql语句中的Statement,使用字符串去拼接sql; sqlStatement使sql可以是sql中的任一部分传入到Statement中,不能防止sql注入。

#{}输入参数是基本数据类型,#{}中的名字随便写

输 入 参 数 是 基 本 数 据 类 型 , {}输入参数是基本数据类型, ,{}中的名字只能写value
#{},${}如果参数是java对象,写的是属性名
如果查询出来是多条数据 sql配置文件里的resultType写的是集合元素的数据类型
也就是说,不管查出来是一条/多条 都是写一样的数据类型
在这里插入图片描述

转载地址:http://uyhrb.baihongyu.com/

你可能感兴趣的文章
60款很酷的 jQuery 幻灯片演示和下载
查看>>
nyoj-20-吝啬的国度(深搜)
查看>>
【NOI 2018】归程(Kruskal重构树)
查看>>
spark 2.4安装
查看>>
Embeded linux之移植boa
查看>>
C之变量初始化的重要性
查看>>
jQuery 学习笔记(jQuery: The Return Flight)
查看>>
Java中常用的测试工具JUnit
查看>>
PHP图形图像的典型应用 --常用图像的应用(验证码)
查看>>
Robot Framework-Ride界面介绍及库的添加
查看>>
IntelliJ IDEA 连接数据库 详细过程
查看>>
redis完全攻略
查看>>
D3---01基础的柱状图制作(转)
查看>>
Time-Varying Mesh Compression
查看>>
SocketServer源码学习(二)
查看>>
编写DLL所学所思(1)——导出函数
查看>>
POJ3006-Dirichlet's Theorem on Arithmetic Progressions
查看>>
QT分页控件,开源,供大家使用
查看>>
005.LVM删除
查看>>
Hibernate 简介(百度)
查看>>