博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java系列技术之Mybatis
阅读量:4130 次
发布时间:2019-05-25

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

在这里插入图片描述

认识MyBatis

Mybatis是什么?

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

Mybatis的由来

  • MyBatis 本是apache的一个开源项目iBatis。
  • 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。
  • 2013年11月迁移到Github。

ORM是什么

对象-关系映射(OBJECT/RELATIONALMAPPING,简称ORM),是随着面向对象的软件开发方法发展而产生的。用来把对象模型表示的对象映射到基于SQL 的关系模型数据库结构中去。这样,我们在具体的操作实体对象的时候,就不需要再去和复杂的 SQL 语句打交道,只需简单的操作实体对象的属性和方法 。ORM 技术是在对象和关系之间提供了一条桥梁,前台的对象型数据和数据库中的关系型的数据通过这个桥梁来相互转化。

ORM框架和MyBatis的区别

在这里插入图片描述

编码流程

  1. 编写全局配置文件:xxxConfig.xml
  2. POJO类
  3. 映射文件:xxxMapper.xml
  4. 编写dao代码:xxxDao接口、xxxDaoImpl实现类
  5. 单元测试类

需求

1、根据用户id查询一个用户信息

2、根据用户名称模糊查询用户信息列表

3、添加用户

项目搭建

  • 创建maven工程:mybatis-demo
  • POM文件

在这里插入图片描述

  • SqlMapConfig.xml
    在这里插入图片描述
  • UserMapper.xml
    在这里插入图片描述
  • PO类
    在这里插入图片描述

需求实现

查询用户

映射文件

在这里插入图片描述

配置说明:
在这里插入图片描述
dao接口和实现类
在这里插入图片描述

  • 生命周期(作用范围)

1.sqlsession:方法级别

2.sqlsessionFactory:全局范围(应用级别)
3.sqlsessionFactoryBuilder:方法级别
在这里插入图片描述

测试代码

在这里插入图片描述

#{}和${}区别

  • 区别1
#{} :相当于JDBC SQL语句中的占位符? (PreparedStatement)${}  : 相当于JDBC SQL语句中的连接符合 + (Statement)
  • 区别2
#{} : 进行输入映射的时候,会对参数进行类型解析(如果是String类型,那么SQL语句会自动加上’’)${}  :进行输入映射的时候,将参数原样输出到SQL语句中
  • 区别3
#{} : 如果进行简单类型(String、Date、8种基本类型的包装类)的输入映射时,#{}中参数名称可以任意${}  : 如果进行简单类型(String、Date、8种基本类型的包装类)的输入映射时,${}中参数名称必须是value
  • 区别4
${} :存在SQL注入问题 ,使用OR 1=1 关键字将查询条件忽略

添加用户

#{}:是通过反射获取数据的—StaticSqlSource

${}:是通过OGNL表达式会随着对象的嵌套而相应的发生层级变化 --DynamicSqlSource**

映射文件

在这里插入图片描述

dao接口和实现类

在这里插入图片描述

测试代码

在这里插入图片描述

主键返回

在这里插入图片描述

添加selectKey标签实现主键返回。

  • keyProperty:指定返回的主键,存储在pojo中的哪个属性
  • order:selectKey标签中的sql的执行顺序,是相对与insert语句来说。由于mysql的自增原理,执行完insert语句之后才将主键生成,所以这里selectKey的执行顺序为after。
  • resultType:返回的主键对应的JAVA类型
  • 1608976:是mysql的函数,返回auto_increment自增列新记录id值。

到此这篇关于文章就结束了!

总结

另外本人整理了一些Mybatis的视频资料,一共有8集,以及各种Java的学习视频以及资料,免费分享给大家,想要资料 的可以 ” 即可免费领取。深入底层,剖析源码。了解本质。 爱编程,爱生活,爱分享!

在这里插入图片描述

希望对大家有所帮助,有用的话点赞给我支持!
在这里插入图片描述

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

你可能感兴趣的文章
Qt实现简单延时
查看>>
qml有关矩形说明
查看>>
在qt中使用QSplitter设置初始比例setStretchFactor失效的解决方法
查看>>
repeater的使用
查看>>
qt msvc编译中文乱码解决
查看>>
qt中TextField输入框无法输入中文解决办法
查看>>
qt实现点击出现窗口,点击其他任何地方窗口消失
查看>>
QML DropArea拖拉文件事件
查看>>
CORBA links
查看>>
读后感:>
查看>>
ideas about sharing software
查看>>
different aspects for software
查看>>
To do list
查看>>
Study of Source code
查看>>
如何使用BBC英语学习频道
查看>>
spring事务探索
查看>>
浅谈Spring声明式事务管理ThreadLocal和JDKProxy
查看>>
初识xsd
查看>>
java 设计模式-职责型模式
查看>>
构造型模式
查看>>