Mybatis 学习---基础知识
来源:互联网 发布:dm单设计软件 编辑:程序博客网 时间:2024/05/21 19:44
Mybatis 学习—基础知识
1. 原生JDBC存在的一些问题
- jdbc 连接数据库的一般步骤
1、 加载数据库驱动
2、 创建并获取数据库链接
3、 创建jdbc statement对象
4、 设置sql语句
5、 设置sql语句中的参数(使用preparedStatement)
6、 通过statement执行sql并获取结果
7、 对sql执行结果进行解析处理
8、 释放资源(resultSet、preparedstatement、connection)
Connection connection = null;// 预编译的Statement, 使用preparedStatement能够为预先进行编译计划的执行,// 提高数据库性能,而且能够防止sql注入PreparedStatement preparedStatement = null;ResultSet resultSet = null;try { //加载数据库驱动 Class.forName("com.mysql.jdbc.Driver"); //通过驱动管理类获取数据库链接 connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8", "root", "011152"); //定义sql语句 ?表示占位符 String sql = "select * from user where username = ?"; //获取预处理statement preparedStatement = connection.prepareStatement(sql); //设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值 preparedStatement.setString(1, "王五"); //向数据库发出sql执行查询,查询出结果集 resultSet = preparedStatement.executeQuery(); //遍历查询结果集 while(resultSet.next()){ System.out.println(resultSet.getString("id")+" "+resultSet.getString("username")); }} catch (Exception e) { e.printStackTrace();}finally{ //释放资源}
- jdbc 连接数据库的缺点及解决方案设想
1.数据库连接使用时就连接,不使用时就释放,浪费了大量的资源,影响数据库性能
解读方案:使用数据库连接池
2.sql语句硬编码到Java代码中,一旦修改sql也需要修改Java代码,不利于维护
解决方案: sql 配置到xml中
3、向preparedStatement中设置参数,对占位符号位置和设置参数值,硬编码在java代码中,不利于系统维护。
设想:将sql语句及占位符号和参数全部配置在xml中。
4.从resutSet中遍历结果集数据时,存在硬编码,将获取表的字段进行硬编码,,不利于系统维护。
设想:将查询的结果集,自动映射成java对象。
2. Mybatis 框架
Mybatis 是一个持久层的ORM的轻量级的框架,原来是Apach的开源项目,后来托管到google code,现在在github上。
让程序员将其主要精力放在sql上面,通过mybatis提供的映射方式,自由灵活生成sql语句
与hibernate不同,mybatis一般需要程序员自己写sql,比较灵活易控,而hibernate则自动生成sql
mybatis可以将向 preparedStatement中的输入参数自动进行输入映射,将查询结果集灵活映射成java对象。(输出映射)
mybatis 与hibernate的对比
更多的一个对比可以查看博客 : https://www.cnblogs.com/inspurhaitian/p/4647485.html
Hibernate 消除了代码的映射规则(即与数据库中表的映射规则),它被分离到XML中去配置或者注解实现,而且数据库的连接也被配置在XML中,通过Session进行操作,消除了JDBC的大量代码,提高了可编程性和简洁性,而且提供了级联、缓存、映射、一对多等功能
mybatis 解决了hibernate的哪些痛点?
1. Hibernate屏蔽了SQl,是全表映射,带来性能问题,因为有时我们可能只关注表中的某些字段,例如更新修改时需要发送表中的所有字段
2. 虽然提供了HQL,但是封装了SQL,SQL修改与优化困难
3. 无法根据不同的条件组装不同SQL
4. 对于多表关联与复杂SQL查询支持差,不能支持存储过程
说明: 本文大部分内容都是跟随者传播智课的教学视频学习而来,可以看做是翻译文章,只是自己吸收之后又书写一遍,加深自己的知识理解。
- Mybatis 学习---基础知识
- Mybatis学习笔记---day01基础知识
- Mybatis学习(1)--基础知识
- mybatis基础知识——学习笔记(1)
- mybatis基础知识
- Mybatis基础知识
- MyBatis基础知识
- Mybatis基础知识
- MyBatis基础知识
- mybatis基础知识
- mybatis基础知识——学习笔记(2)
- mybatis基础知识-2.mybatis框架
- 【Spring+SpringMVC+MyBatis深入学习及搭建】01.MyBatis的基础知识
- Mybatis基础知识(1)
- Mybatis基础知识--番外篇
- Mybatis基础知识(2)
- Mybatis基础知识(3)
- mybatis的基础知识
- in_array函数的效率测试和二分法初测
- linux系统异常,学习如何通过系统日志进行初步排查
- 先知先觉
- 线程池详解
- 记录一些自己常用的链接
- Mybatis 学习---基础知识
- 59.56.97.3快快网络,给您最好的!
- 使用jekins自动构建部署java maven项目(jdk1.7+tomcat7.0+jenkins2.19.3)
- Python-Flask项目再填一坑——User用户模型的建立
- 好累!iTunes安装不上,UNKNOW\Components...,以及注册表“注册表编辑器无法在当前所选的项及其部分子项上设置安全性”,注册表某项打不开、删不掉,所有问题,都在此终结!
- Java面试需要知道的SQL语句语法(一)
- 11.09学习心得
- 汇编语言 实验7
- CodeForces