mybatis(一) mybatis介绍 单独使用jdbc编程中问题总结 mybatis框架原理

1.1 mybatis介绍

mybatis原名是ibatis,是apache的开源项目。ibatis改成mybatis不仅仅是名称的改变,mybatis在功能上也有升级。

mybatis是一个持久层的框架,mybatis框架和关系数据库进行交互,将数据持久化到关系数据中。

mybatis目前 在githubhttps://github.com/mybatis/mybatis-3/releases)托管。

 

java中通过jdbc对数据库,jdbc是一套数据库访问接口。mybatis持久层框架对jdbc的封装。

 

mybatis需要程序员自己编写sql,对于一些ORM框架(对象关系映射)一般是不需要程序员来编写sql

mybatis的重点让程序员自己去灵活掌握sql要对 sql进行优化比较容易让程序员自己掌握

mybatis同时也对jdbc访问数据库的过程 进行了封装,对创建connection、创建statement、手动设置参数、结果集检索等进行封装。

 

mybatis可以通过 xml或注解(不推荐)将statement进行配置,主要完成两个重要核心 功能:

1、输入映射,将java对象映射到statement中即sql语句的输入参数。 

2、输出映射,将sql语句执行的结果映射成java对象。


单独使用jdbc编程中问题总结

目的:

1mybatis等持久层框架都是对jdbc的封装,为了更好的去学习mybatis,对单独使用jdbc编程中问题进行总结。

2、企业开发中要进行技术选型,对于小型 的项目来说,单独使用jdbc或对 jdbc简单的封装也在技术选型范围考虑之内。企业在技术选型主要考虑人力资源等,以节省成本及创建利益最大化为目标。

 

问题总结:

 

1、程序中存在硬编码(数据驱动加载,创建数据连接、sql语句),不利于系统维护。

设想解决硬编码:可以sql语句等信息配置在xml中。

 

2、数据库连接使用时打开不时立即关闭,频繁开关连接对数据库资源是一种浪费。

设想解决方案:使用数据库连接池。

 

3、向preparedStatement设置参数时 将参数下标 号(从1开始)硬编码在代码并且将向占位符号设置的参数也硬编码了

设想解决方案:可以自动通过程序将java类型对象映射到preparedStatement中。(输入参数)

 

4、从Resultset中取出结果集进行遍历,将列名硬编码

设想解决方案:可以自动通过程序将sql查询结果集映射到时java对象中,自动完成将sql查询的列值构造成一个java对象。(输出参数)

 

mybatis框架原理



1SqlMapConfig.xmlmybatis全局配置文件,名称不固定的。

配置了:数据源、事务等运行环境,最重要的是配置mybatis运行所需要的一些配置(Mapper.xml映射配置、全局运行参数、别名。。。) 

mybatis运行先找SqlMapConfig.xml,由SqlMapConfig.xmlMapper.xml映射配置。 

Mapper.xmlmybatis的映射文件,配置了sql语句及sql 语句输入参数类型、及sql语句结果集所映射的类型

mapper.xml中配置了statement(支持各种statement)了。

 

2SqlSessionFactory,通过SqlMapconfig.xml等配置文件构造 一个会话工厂对象,要操作数据库通过SqlSessionFactory创建SqlSession会话。

作用:创建SqlSession会话

  

3SqlSessionmybatis操作数据库使用的会话接口,定义了操作数据库方法(添加、删除、修改、更新)

SqlSession是一个接口,是一个面向程序员的接口。

 

4Executor,是一个接口,是一个操作数据库的底层接口,其实现类有基本执行器、缓存执行器两种

SqlSession需要通过Executor操作数据库。

 

5MappedStatement   mybatis底层封装对象,封装了sql语句、输入参数类型、输出结果类型等信息

 



  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值