JDBC-Mybatis

关键字:

SqlSessionFactory 和 Sqlsesion(一个事务的开始)
数据源                    会话独享 一个sqlsession 就是一个连接
jdbc 和 mybatis exectuor 执行preperstatemen  t 反射 代理 单例
对象关系映射半orm框架

JDBC和mybatis(纯属个人理解)
jdbc 是Java DataBase Connnection Java数据库连接。
Mybatis 是JDBC的封装 是一种半自动的orm框架。
首先我们看一下Jdbc在Java应用程序和数据库是怎么一个处理过程
就是一个Java应用程序需要数据库中的数据时,怎么去操作。
1.首先加载JDBC驱动,不管你是连接Mysql还是连接Oracle。
加载mysql的驱动 “com.jdbc.mysql.driver”
加载oracle的驱动 “jdbc.oracle.oracleDriver”
2.建立数据源,返回一个connection对象,也就是Java与数据源建立连接。此时需要url以及用户名和密码
在mysql数据库 一般的url是这样的 jdbc://mysql:localhost/3306/democ” democ 就是你的目标数据库 
在oracle数据库 url “”
3.连接建立完成之后,对数据库中的表进行DML操作。
4.断开连接。
以上就是整个过程。
但是存在如下的几个问题,特别重要。
1.就是查询的数据如何处理,一般的我们把数据表看做是一个类, 数据表中的一行数据就是一个对象。
这样的我们就可以使用POJO来完成对结果的暂时保存。
2.对于不同数据表来说,我在执行全查询的时候,虽然都是全查询但是处理的表的对象时不一样的。比如说:
我对A表要进行全查询,我就需要一个方法来完成对A表查询这个操作。同时我现在要对B表进行全查询,
此时我就需要一个方法来完成对B表查询到这个操作。又来一个C表,又得有一个方法。这样的处理方式代码没有可重用性,
而且方法臃肿。
3.每个方法的结果你需要手动来完成解析,你要对结果进行封装或者其他操作。
Mybatis
这个orm框架为我们解决了很多的事情。
1.config.xml 这个配置文件为我们解决了关于建立数据源的问题,
SqlSessionFactory 这样的一个sql会话工长为我们解决了数据源的问题,你不需要使用代码在去自己建立连接关闭连接。
2.sqlsession 一个sqlsession就是一个连接,他会有一个connection的对象,解决了连接的问题。
3.还有一个xml就是XXmapeer.xml(Sql),这个xml专注Sql,你只需要把你的Sql代码写好就行,如何执行,矿建也会帮你完成。
4.session.getMapper(XXX.class)---session是sqlsession的一个对象,调用getMapper 通过反射机制,代理模式,会生成一个
XXX.class接口的代理对象。
这个代理对象为我们处理了很多事情。 你要执行sql语句,你就必须有sql语句,在哪?在XXXmapper.xml中,通过代理对象的方法名,把方法名当做ID在XXXmapper.xml
中查找,找到之后提取其中的SQL语句,这个就是我们程序首先要做的,提取对应方法的SQL语句。在一个你要执行,
就要调用执行的方法,在JDBC中是通过类似于connection.Preperstatemnt(sql)完成的,而在源码中我们可以看到,session.
insert(functionName,param),这种方式是在没有使用接口的情况下,我们手动调用,在使用接口的情况下,实际上是封装了这一个操作。这样代理对象就帮我们完成了这些工作,当你使用代理对象调用某个接口的方法的时候就执行了这一些列操作。
为什么说mybatis是半自动的?
实际上在我们进行XML中进行sql语句的编写时候,一般情况下根据条件做一些的DML操作,此时,传递的参数可以使基本数据类型,也可以是POJO,POJO和数据表会映射,只是如果你要让框架帮你完成这些映射操作,那么你的POJO对象就必须属性名与数据表的字段名一样,不考虑大小写,这样框架根据get,set方法,获取到对象的具体值,然后替换SQL语句中的参数部分。
但是如果我们的POJO和数据表的字段名称不一样呢! 那么就需要我们手动进行对象关系映射。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值