对数据库的连接 使用时就创建连接,不使用就立即释放,对数据库进行频繁连接开启和关闭,造成数据库的资源浪费,影响数据库的性能;

解决办法:使用数据库连接池,管理数据库的连接。

2 将sql语句硬编码到java代码中,如果sql语句修改,需要重新编译java代码,不利于系统维护,

解决办法:把sql语句I定义到xml配置文件里;

3 在向statement中设置参数,对站位符位置和设置参数数值,硬编码到java代码中,

4 从result结果集中遍历数据时,存在硬编码,讲获取表的字段名硬编码,不便于维护,

讲结果集 自动映射成java对象

mybatis的架构

是一个持久层的项目,是阿帕奇的顶级项目,

通过 mybatis提供的映射方式,半自动的生成sql,大部分还是需要程序员编写sql

核心:输入映射:可以将statement中的输入参数自动输入到映射 通过ongl表达式,将查询的结果集灵活映射成为java对象(输出映射)

mybatis与hibernate的本质区别和应用场景

hibernate:是一个标准的orm的框架,不需要程序员写sql语句sql自动生成,对sql优化 修改 比较困难的

  应用场景:适用于需求变化不多的,中小型项目,

mybatis:专注的sql本身,sql的优化 修改比较方便;不完全的orm的框架,程序员自己写sql,但是实现了输入 输出映射;

应用场景:适用于需求变化较多的项目,比如 互联网项目

mybatis工作原理及实现的更多相关文章

  1. MyBatis工作原理

    Mybatis工作原理: 我们的应用程序通过mybatis提供的api,增删改查方法来访问数据库,api底层调用了jdbc ,只不过mybatis对jdbc的封装是不完全封装,里面的sql语句需要我们 ...

  2. 面试官:你分析过mybatis工作原理吗?

    Mybatis工作原理也是面试的一大考点,必须要对其非常清晰,这样才能怼回去.本文建立在Spring+SpringMVC+Mybatis整合的项目之上. 我将其工作原理分为六个部分: 读取核心配置文件 ...

  3. 从源码角度分析 MyBatis 工作原理

    一.MyBatis 完整示例 这里,我将以一个入门级的示例来演示 MyBatis 是如何工作的. 注:本文后面章节中的原理.源码部分也将基于这个示例来进行讲解.完整示例源码地址 1.1. 数据库准备 ...

  4. Mybatis八( mybatis工作原理分析)

    MyBatis的主要成员 Configuration        MyBatis所有的配置信息都保存在Configuration对象之中,配置文件中的大部分配置都会存储到该类中 SqlSession ...

  5. Mybatis工作原理(九)

    mybatis工作流程: (1) SqlSessionFactoryBuilder 从 XML 配置文件或通过Java的方式构建出 SqlSessionFactory 的实例. (2) SqlSess ...

  6. MyBatis 工作原理

    参考链接: 深入理解Mybatis原理:http://blog.csdn.net/luanlouis/article/details/40422941 MyBatis原理:http://www.jia ...

  7. MyBatis - 8.MyBatis工作原理

    Mybatis 配置 1.SQLSessionFactory的初始化 根据配置文件获取 SqlSessionFactory 2.openSession获取SqlSession对象 3.getMappe ...

  8. Mybatis工作原理(含部分源码)

    MyBatis的初始化 1.读取配置文件,形成InputStream String resource = "mybatis.xml"; // 加载mybatis的配置文件(它也加载 ...

  9. Mybatis之工作原理

    1.Mybatis的架构 1.1 Mybatis的框架分层 1.2 MyBatis的实现原理 mybatis底层还是采用原生jdbc来对数据库进行操作的,它支持定制化 SQL.存储过程以及高级映射的优 ...

随机推荐

  1. 「CQOI2014」数三角形

    题目链接 问题分析 可以先任意选\(3\)个数,然后减去三点共线的部分. 三点共线又分\(2\)种情况: 横的或者竖的.这一部分方案数是\(n\times{m\choose 3}+m\times {n ...

  2. easyui tree 点击state=closed节点,每次重新加载数据

    http://blog.csdn.net/lovejavaloveworld/article/details/30052305 树控件读取URL.子节点的加载依赖于父节点的状态.当展开一个封闭的节点, ...

  3. python 判断是字母的多种方法

    方法一:isalpha() "a".isalpha()   方法二:string.letters string.uppercase  import string  s=" ...

  4. 2019java第十二周课程总结

    本周主要还是学习图形界面 各种容器使用方法 如下代码: package text10; import java.awt.*; import java.io.File; import javax.swi ...

  5. [Java]分解算术表达式二

    源码: package com.hy; import java.io.BufferedReader; import java.io.IOException; import java.io.InputS ...

  6. 转自B站 真希望我在20岁就懂得的10个人生道理 主讲:王魄

    视频地址:https://www.bilibili.com/video/av65194244?from=search&seid=15261178568916939794 这位阿姨讲得还行,特别 ...

  7. DP练习题——洛谷P1970花匠

    目录 题目描述: 输入输出格式: 输入格式: 输出格式: 输入输出样例: 输入样例: 输出样例: 题目分析: 解法一: 解法二: 结语: 题目描述: 洛谷\(P1970\) 花匠栋栋种了一排花,每株花 ...

  8. 浏览器端-W3School-JavaScript:JavaScript Number 对象

    ylbtech-浏览器端-W3School-JavaScript:JavaScript Number 对象 1.返回顶部 1. JavaScript Number 对象 Number 对象 Numbe ...

  9. PDFCrop裁剪PDF文档使用方法

    使用VISIO画图,然后生成PDF文档插入到LaTeX文档中,会出现黑边框的问题.通过对PDF文件进行裁剪可以去掉黑边框,之前我是通过Acrobat进行裁剪,后来激活失效了..只好找其他方法.今天发现 ...

  10. Java -- 通过 URLConnection 进行http请求中文乱码

    对writer和reader指定字符集 out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(), "utf-8 ...