最近面试了一些后端开发同学,过程中发现一个现象,很多同学喜欢将一系列英语或者英语缩写描述的技术罗列在简历上,有些还有好多行,但是这里有个大问题,有些同学可能是无意,也有可能是不了解技术本身而错误的将一些不相干的技术放在一行,比如Springboot和Mysql,Dubbo和Redis,Maven和Git,这种一看就暴露了自身水平,诚然更多的技术栈罗列可以增加自己通过简历筛选的环节,但是如果不是真正的了解一下背后的技术,还是会挂在面试环节。
今天我们就跟大家一起学习一个技术名词ORM,这其实也是每一个后台开发同学所肯定要面对的技术。
一、名词解释
ORM是Object Relation Mapping的首字母缩写。Object指的是面向对象编程的对象或者一个类,Relation指的是关系型数据库里面的关系,Mapping指的是映射,连在一起的意思就是将关系型数据库跟代码里面的类做映射,好像还是没有说的很明白,举个例子,比如我们有张数据表,如下所示
这张表其实就代表了一个类,如下Java代码所示
public class Student{ public String name; public int age; public int grade;}
数据库里面的每一行其实就代表了类的一个实例,如下关系所示
对应的实例如下
Student studentA = new Student();studentA.name = "Lily";studentA.age = 10;studentA.grade = 3;Student studentB = new Student();studentB.name = "Jame";studentB.age = 11;studentB.grade = 4;
通过上面的对应关系,如果有一种技术能够像操作对象一样操作数据库,例如对每个实例的增删改就直接对应到数据库里面的增删改,那么我们的代码就会摆脱大量的try-catch语句,以及一系列的数据连接-关闭等复杂而冗余的操作,ORM正是为了解决这个问题而提出来的。
例如之前文章手把手教你使用Mybatis连接数据库里面所写的,当我们要操作数据的时候通过ORM技术暴露出来的API我们能够很简便的进行数据的插入操作,而完全不需要感知数据库的存在。
二、常见实现技术
ORM技术其实已经存在很多年了,早在2001年就提出来的Hibernate就是这一技术实现的先驱,并且还伴生出现了HQL。
在SpringBoot框架里面的JPA也是这一技术的实现,通过简单的or/and/not/等等暴露的java语句能够构造出复杂的sql查询。
也有Mybatis的前身iBatis,在将项目贡献给Apache基金会之后,作者又另起炉灶,发起了Mybatis(话说,这个"My"取的还有点意思)。
当然这里离不开我们AI客服系统会使用到的Mybatis,之前的文章中我们已经将后台通过Mybatis跟数据库打通了,今天简单介绍一下其另外一种用法。
三、Mybatis的另外一种用法
之前的方案中,我们通过在GenerateConfig文件中配置一个数据库,通过脚本创建了Model层和DAO层,然后就很方便的可以对数据库进行操作了。但是当我们的查询语句涉及复杂的Sql时,比如Inner Join其他表,而且还带了复杂的连接条件,其实这个时候直接书写SQL语句是一个快速的实现方案,这也是Mybatis优于Hibernate的地方,Mybatis保留了程序员对数据库操作的高灵活性。话不多说,给个实例。
构造一个StudentMapper.xml内容如下
<?xml version="1.0" encoding="UTF-8"?> select * from student
对应的Model层就是上面Student类,对应的DAO层StudentMapper.java如下
public interface StudentMapper { List loadStudents();}
这样便可以在Java工程的其他地方通过StudentMapper加载student的数据了,当然sql里面的语句可以更加复杂,可以包含inner join之类的连表操作,也可以带参数,例如
<?xml version="1.0" encoding="UTF-8"?> select * from student where name=#{name}
对应的DAO层为
public interface StudentMapper { List loadStudents(@Param("name") String name);}
这样就可以通过name去查询对应学生的信息了
需要Java技术资料的朋友可以私信我,免费分享
原文:https://zhuanlan.zhihu.com/p/75089152作者:白天不懂夜的黑来源:知乎