当前位置:首页 > 人工智能

教小师妹快速入门Mybatis,看这篇就够了

本文主要内容:

传统JDBC

传统JDBC编码格式

public class DataBaseUtil {      public static final String URL = "jdbc:mysql://localhost:3306/mblog";     public static final String USER = "root";     public static final String PASSWORD = "123456";     public static void main(String[] args) throws Exception {          Class.forName("com.mysql.jdbc.Driver");         //2.          Connection conn = DriverManager.getConnection(URL,师妹 USER, PASSWORD);         //3.         Statement stmt = conn.createStatement();         //4.         ResultSet rs = stmt.executeQuery("SELECT id, name, age FROM m_user where id =1");         //如果有数据,rs.next()返回true         while(rs.next()){              System.out.println("name: "+rs.getString("name")+" 年龄:"+rs.getInt("age"));         }     } } 

上面代码中知识为了展示JDBC整个过程(异常和资源是快速简单粗暴的处理了,我们关注的入门点不在这两个)。

大致可以分为六个步骤:

加载驱动程序 获得数据库连接 创建一个Statement对象 操作数据库,篇够实现增删改查 获取结果集 关闭资源

从使用层面来说,师妹采用原生态的快速JDBC在项目中使用起来成本还是很高的。如果我们的入门项目中的业务相对比较复杂,数据库表也相对较多,篇够各种操作数据库的师妹增删改查的方法也会随之多起来,那么这样的快速代码重复次数会非常之多。

传统JDBC的入门问题

创建数据库的连接存在大量的硬编码, 执行statement时存在硬编码. 频繁的开启和关闭数据库连接,会严重影响数据库的性能,浪费数据库的资源. 存在大量的重复性编码

为了解决以上问题,就诞生了各种各样替换JDBC的篇够产品。即就是师妹ORM框架。

什么是亿华云计算快速ORM?

全称为Object Relational Mapping。对象-映射-关系型数据库。入门对象关系映射(,简称ORM,或O/RM,或O/R mapping),用于实现面向对象编程语言里不同类型系统的数据之间的转换。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象与关系数据库相互映射。

ORM提供了实现持久化层的另一种模式,它采用映射元数据来描述对象关系的映射,使得ORM中间件能在任何一个应用的业务逻辑层和数据库层之间充当桥梁。

我们的项目中是这样的:

比如说:Apache DbUtils、Spring JDBC、 Hibernate、Ibatis(Mybatis的前生)、Spring Data Jpa等等。

目前最为流行的Mybatis和Spring Data Jpa。云服务器提供商本系列我们先讲解Mybatis,Jpa后面再讲。

ORM的优缺点

优点1.提高了开发效率。由于ORM可以自动对Entity对象与数据库中的Table进行字段与属性的映射,所以我们实际可能已经不需要一个专用的、庞大的数据访问层。2.ORM提供了对数据库的映射,不用sql直接编码,能够像操作对象一样从数据库获取数据。

缺点牺牲程序的执行效率和会固定思维模式,降低了开发的灵活性。

从系统结构上来看,采用ORM的系统一般都是多层系统,系统的层次多了,效率就会降低。ORM是一种完全的面向对象的做法,而面向对象的做法也会对性能产生一定的影响。在我们开发系统时,源码下载一般都有性能问题。性能问题主要产生在算法不正确和与数据库不正确的使用上。ORM所生成的代码一般不太可能写出很高效的算法,在数据库应用上更有可能会被误用,主要体现在对持久对象的提取和和数据的加工处理上,如果用上了ORM,程序员很有可能将全部的数据提取到内存对象中,然后再进行过滤和加工处理,这样就容易产生性能问题。在对对象做持久化时,ORM一般会持久化所有的属性,有时,这是不希望的。但ORM是一种工具,工具确实能解决一些重复,简单的劳动。这是不可否认的。但我们不能指望工具能一劳永逸的解决所有问题,有些问题还是需要特殊处理的,但需要特殊处理的部分对绝大多数的系统,应该是很少的。

MyBatis 是什么?

如果在面试的时候被问到,只要你说出下面三种即可。

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。

MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。

MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

来自官网。

MyBatis的优点和缺点

优点:

(1)基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML里,解除sql与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态SQL语句,并可重用。

(2)与JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手动开关连接;

(3)很好的与各种数据库兼容(因为MyBatis使用JDBC来连接数据库,所以只要JDBC支持的数据库MyBatis都支持)。

(4)能够与Spring很好的集成;

(5)提供映射标签,支持对象与数据库的ORM字段关系映射;提供对象关系映射标签,支持对象关系组件维护。

缺点

(1)SQL语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写SQL语句的功底有一定要求。

(2)SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。

Mybatis环境搭建及简单实例

创建一张数据库表

创建一张m_user表使用MySQL数据库。

CREATE TABLE `m_user` (   `id` int(11) NOT NULL AUTO_INCREMENT,   `name` varchar(255) DEFAULT NULL,   `age` int(11) DEFAULT NULL,   PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; 

添加依赖

<dependency>             <groupId>org.mybatis</groupId>             <artifactId>mybatis</artifactId>             <version>3.5.2</version>         </dependency>         <dependency>             <groupId>mysql</groupId>             <artifactId>mysql-connector-java</artifactId>             <version>8.0.16</version>             <scope>runtime</scope>         </dependency> </dependencies> 

项目结构如下:

创建一个mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration         PUBLIC "-//mybatis.org//DTD Config 3.0//EN"         "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration>     <environments default="development">         <environment id="development">             <transactionManager type="JDBC"/>             <dataSource type="POOLED">                 <property name="driver" value="com.mysql.cj.jdbc.Driver"/>                 <property name="url" value="jdbc:mysql://localhost:3306/mblog?useUnicode=true"/>                 <property name="username" value="root"/>                 <property name="password" value="123456"/>             </dataSource>         </environment>     </environments>     <mappers>         <mapper resource="mapper/UserMapper.xml"/>     </mappers> </configuration> 

分享到:

滇ICP备2023006006号-16