Mybatis框架

Mybatis框架是现在大型项目开发必备的一款框架,与Spring,SpringMVC一起并称为ssm,代替了旧版的Spring、SpringMVC、hibernate 的SSh 开发模式,我没有接触hibernate 所以不谈ssh的开发环境

一、ORM

对象关系映射是一种解决对象与关系型数据库(MySQL、Oracle 、SQLServer等)存在的互不匹配的现象技术
或者说ORM通过描述对象和数据之间的映射数据元数据。将java程序中的对象自动持久化到关系型数据库

二、Mybatis的优点

说一下Mybatis这块框架的优点,Mybatis 最大的优点就是让我们开发人员连接数据库对数据库的操作变得简单便捷
1、SQL语句与代码分离
2、用标签控制动态SQL的拼接
3、结果集与java对象的自动映射
4、编写原生SQL

三、Mybatis的底层实现原理

Mybatishi一个数据持久层框架,在项目开发中主要担任了数据库的连接操作,实现了ORM的思想
可以将查询出来的结果集转换为java对象,也可以将java对象转换为一条数据插入到数据库中。完成和数据库的数据交互。

那么查询的结果集是如何自动转换成java对象?实际使用的反射技术。假设在xxx.mapper文件有一条select,查询之后,列名与属性名要一一对应(可以采用起别名的方式)然后每个列名前添加set,通过method.invoke()调用set方法。给Java对象完成赋值

那么,java对象是如何转换成一条记录插入到数据中的呢?现在假设xxx.mapper的配置文件中有一条语句是insert。那这条语句需要的只从哪里来呢?在Mybatis的配置文件中有一个属性时parameterType的占位符采用 #{ } ,底层依然采用的是反射机制,其中大括号当中需要提供java对象的属性名,该属性名和get进行拼接得到get方法名,然后通过反射机制获取该get方法,再通过method.invoke()来调用这个get方法,这样就可以获取到对应的属性值,然后传入了SQL语句。

  <resultMap id="BaseResultMap" type="com.baidu.p2p.model.loan.BidInfo" >
    <!--
      WARNING - @mbggenerated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Wed Sep 11 15:05:12 CST 2019.
    -->
    <id column="id" property="id" jdbcType="INTEGER" />
    <result column="loan_id" property="loanId" jdbcType="INTEGER" />
    <result column="uid" property="uid" jdbcType="INTEGER" />
    <result column="bid_money" property="bidMoney" jdbcType="DOUBLE" />
    <result column="bid_time" property="bidTime" jdbcType="TIMESTAMP" />
    <result column="bid_status" property="bidStatus" jdbcType="INTEGER" />
  </resultMap>

  <select id="selectTotalBidMoney" resultType="java.lang.Double">
     select sum(bid_money) from b_bid_info
  </select>

其实Mybatis设计最牛的地方在于采用JDK动态代理的方式生成DAO接口的实现类,其中Dao接口中的每一个方法都不允许重载 , 因为接口中的每一个方法都对应了映射文件的id值,id值是唯一的,接口类的名字对应了mapper映射文件的,命名空间

<mapper namespace="com.baidu.p2p.mapper.loan.BidInfoMapper" >

以上大概就是我了解的Mybatis的实现原理。

总体而言Mybatis框架使用起来应该是比较简单的,它的作用在于在项目开发中,简化了数据持久层对于数据库访问的难度,简化了我们JDBC访问数据库的冗余代码 , 简化我们访问数据的难度, 让开发大中小型项目难度大大降低

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!
提供的源码资源涵盖了python应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值