Java系列技术之Mybatis

Java系列技术之Mybatis_第1张图片

认识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的区别

Java系列技术之Mybatis_第2张图片

编码流程

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

需求

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

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

3、添加用户

项目搭建

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

Java系列技术之Mybatis_第3张图片

  • SqlMapConfig.xml
    Java系列技术之Mybatis_第4张图片
  • UserMapper.xml
    Java系列技术之Mybatis_第5张图片
  • PO类
    Java系列技术之Mybatis_第6张图片

需求实现

查询用户

映射文件

Java系列技术之Mybatis_第7张图片
配置说明:
Java系列技术之Mybatis_第8张图片
dao接口和实现类
在这里插入图片描述

  • 生命周期(作用范围)

1.sqlsession:方法级别
2.sqlsessionFactory:全局范围(应用级别)
3.sqlsessionFactoryBuilder:方法级别
Java系列技术之Mybatis_第9张图片

测试代码

Java系列技术之Mybatis_第10张图片
#{}和${}区别

  • 区别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接口和实现类

Java系列技术之Mybatis_第11张图片

测试代码

Java系列技术之Mybatis_第12张图片

主键返回

Java系列技术之Mybatis_第13张图片
添加selectKey标签实现主键返回。

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

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

总结

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

Java系列技术之Mybatis_第14张图片
希望对大家有所帮助,有用的话点赞给我支持!
Java系列技术之Mybatis_第15张图片

你可能感兴趣的:(数据库,mybatis,java)