jdbc与mybatis的区别

mybatis mybatis 本是apache的一个开源项目ibatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为mybatis 。2013年11月迁移到github。ibatis一词来源于“internet”和“abatis”的组合,是一个基于java的持久层框架。ibatis提供的持久层框架包括sql maps和data access objects(daos)
mybatis 是一款优秀的持久层框架,它支持定制化 sql、存储过程以及高级映射。mybatis 避免了几乎所有的 jdbc 代码和手动设置参数以及获取结果集。mybatis 可以使用简单的 xml 或注解来配置和映射原生信息,将接口和 java 的 pojos(plain old java objects,普通的 java对象)映射成数据库中的记录。
jdbc jdbc(java database connectivity,java数据库连接)是一种用于执行sql语句的java api,可以为多种关系数据库提供统一访问,它由一组用java语言编写的类和接口组成。jdbc提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,jdbc也是个商标名。
有了jdbc,向各种关系数据发送sql语句就是一件很容易的事。换言之,有了jdbc api,就不必为访问sybase数据库专门写一个程序,为访问oracle数据库又专门写一个程序,或为访问informix数据库又编写另一个程序等等,程序员只需用jdbc api写一个程序就够了,它可向相应数据库发送sql调用。同时,将java语言和jdbc结合起来使程序员不必为不同的平台编写不同的应用程序,只须写一遍程序就可以让它在任何平台上运行,这也是java语言“编写一次,处处运行”的优势。
mybatis和jdbc区别 jdbc是java提供的一个操作数据库的api;
mybatis是一个支持普通sql查询,存储过程和高级映射的优秀持久层框架。mybatis消除了几乎所有的jdbc代码和参数的手工设置以及对结果集的检索封装。mybatis可以使用简单的xml或注解用于配置和原始映射,将接口和java的pojo(plain old java objects,普通的java对象)映射成数据库中的记录。
mybatis是对jdbc的封装。相对于jdbc,mybatis有以下优点:
1. 优化获取和释放
我们一般在访问数据库时都是通过数据库连接池来操作数据库,数据库连接池有好几种,比如c3p0、dbcp,也可能采用容器本身的jndi数据库连接池。我们可以通过datasource进行隔离解耦,我们统一从datasource里面获取数据库连接,datasource具体由dbcp实现还是由容器的jndi实现都可以,所以我们将datasource的具体实现通过让用户配置来应对变化。
c3p0 xml配置:
《bean id=“datasource” class=“com.mchange.v2.c3p0.combopooleddatasource”
destroy-method=“close”》
《property name=“driverclass” value=“ oracle.jdbc.driver.oracledriver ”/》
《property name=“jdbcurl” value=“ jdbc:oracle:thin:@localhost:1521:ora9i ”/》
《property name=“user” value=“admin”/》
《property name=“password” value=“1234”/》
《/bean》
dbcp xml配置:
《bean id=“datasource” class=“org.apache.commons.dbcp.basicdatasource”
destroy-method=“close”》
《property name=“driverclassname” value=“com.mysql.jdbc.driver” /》
《property name=“url” value=“jdbc:mysql://localhost:3309/sampledb” /》
《property name=“username” value=“root” /》
《property name=“password” value=“1234” /》
《/bean》
durid xml配置:
《bean name=“datasource” class=“com.alibaba.druid.pool.druiddatasource”》
《property name=“driverclassname”》
《value》com.mysql.jdbc.driver《/value》
《/property》
《property name=“url”》
《value》${jdbc_url_gx}《/value》
《/property》
《property name=“username”》
《value》${jdbc_username_gx}《/value》
《/property》
《property name=“password”》
《value》${jdbc_password_gx}《/value》
《/property》
《/bean》
2.sql统一管理,对数据库进行存取操作
我们使用jdbc对数据库进行操作时,sql查询语句分布在各个java类中,这样可读性差,不利于维护,当我们修改java类中的sql语句时要重新进行编译。
mybatis可以把sql语句放在配置文件中统一进行管理,以后修改配置文件,也不需要重新就行编译部署。
3.生成动态sql语句
我们在查询中可能需要根据一些属性进行组合查询,比如我们进行商品查询,我们可以根据商品名称进行查询,也可以根据发货地进行查询,或者两者组合查询。如果使用jdbc进行查询,这样就需要写多条sql语句。
mybatis可以在配置文件中通过使用《if test=””》《/if》标签进行sql语句的拼接,生成动态sql语句。比如下面这个例子:
《select id=“getcountbyinfo” parametertype=“user” resulttype=“int”》
select count(*) from user
《where》
《if test=“nickname!=null”》
and nickname = #{nickname}
《/if》
《if test=“email!=null”》
and email = #{email}
《/if》
《/where》
《/select》
就是通过昵称或email或者二者的组合查找用户数。
4.能够对结果集进行映射
我们在使用jdbc进行查询时,返回一个结果集resultset,我们要从结果集中取出结果封装为需要的类型
在mybatis中我们可以设置将结果直接映射为自己需要的类型,比如:javabean对象、一个map、一个list等等。像上个例子中就是将结果映射为int类型。

重磅消息:中国移动首个5G基站在广州开通!
物位传感器及其应用
第82届中国电子展为电子信息人才搭建交流平台
宁夏首个LED照明研发生产项目落户银川经济技术开发区 总投资达11亿元
关于工业插头的价格分析,受哪些因素的影响
jdbc与mybatis的区别
电源pfc电路可以取消吗?电源pfc电路图解
Microsoft Teams视频聊天人性化设计,更方便用户使用
PyTorch如何实现自定义CUDA算子并调用的方法且测量CUDA程序耗时
2011韩国电子展深圳或将组团参展掘商机
美国海军F / A-18超音速战斗机 获得了红外搜索和跟踪(IRST)Block II吊舱
中国国航A330将搭载GX Aviation卫星通信系统
华虹非接CPU卡公交应用升级解决方案专题会成功举办
5G的安全漏洞大多可以被修复
华为新款入门级智慧屏搭载鸿蒙系统将在21号发布
什么牌子蓝牙耳机好用,适合学生党的蓝牙耳机有哪些
中石化智慧工厂之化工厂人员定位解决方案
比亚迪计划加入车内乘员体温监测系统 乘员体温情况一目了然
三星Note8什么时候上市?三星Note8最新消息:三星Note8正面屏面板和外观渲染图最新爆料
薄膜电容器推动新能源科技发展