mybatis系统学习(一)——jdbc基础和mybatis

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: mybatis系统学习(一)——jdbc基础和mybatis 说明 这一次我所想要做的事,是系统的学习一下mybatis,结合官网文档以及各种网络资料和以往实践经验。 既然是系统的学,就免不了需要了解他所要解决的事情。

mybatis系统学习(一)——jdbc基础和mybatis

说明

这一次我所想要做的事,是系统的学习一下mybatis,结合官网文档以及各种网络资料和以往实践经验。
既然是系统的学,就免不了需要了解他所要解决的事情。
据我目前的理解,作为一个持久层框架,mybatis归根结底解决的问题其实就是jdbc那几句话的问题。因此,在此之前,就必须先充分熟悉jdbc操作数据库的必要步骤。

环境准备

jdbc和mybatis既然是用来操作数据库的,那么数据库就是必备的条件,所以,为了后边的实例,这里先要创建一个简单的数据表(注:全过程使用mysql数据库):

CREATE TABLE `user` (
   `id` int(5) NOT NULL AUTO_INCREMENT,
   `name` varchar(20) NOT NULL,
   `age` int(3) NOT NULL,
   `role` int(2) NOT NULL DEFAULT '0',
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8

与此同时,再建立一个与之对应的实体类,供后续使用:

/**
 * 用户实体类
 * 
 * @author 涂宗勋
 * @date 2018年4月25日
 */
public class UserModel {
    private int id;
    private String name;
    private int age;
    private int role;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public int getRole() {
        return role;
    }
    public void setRole(int role) {
        this.role = role;
    }
    @Override
    public String toString() {
        return "UserModel [id=" + id + ", name=" + name + ", age=" + age + ", role=" + role + "]";
    }
}

jdbc基础实现

准备工作做完了,然后就要进入jdbc的正题了。
可能现在绝大多数项目都不是直接使用jdbc,而是用mybatis、jpa等框架,因此如果手写的话,可能有相当多的一部分人并不能保证百分之百正确的写出来。
一般来说,原生的jdbc代码基本需要遵循如下例子中的五步,其他都差不多是在这五个步骤上的演变:

// 1、加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 2、获取连接
String url = "jdbc:mysql://localhost:3306/test";
String username = "tuzongxun";
String password = "123456";
Connection connection = DriverManager.getConnection(url, username, password);
// 3、创建statement
Statement statement = connection.createStatement();
// 4、执行sql
String sql = "select * from user";
ResultSet resultSet = statement.executeQuery(sql);
// 5、处理结果
while (resultSet.next()) {
    UserModel user = new UserModel();
    user.setId(resultSet.getInt("id"));
    user.setName(resultSet.getString("name"));
    user.setAge(resultSet.getInt("age"));
    user.setRole(resultSet.getInt("role"));
    System.out.println(user);
}

上述代码就是一个极其简单的原始jdbc的例子,实现的功能就是:从user表中查询出所有的数据,然后遍历结果集中的数据为user对象赋值,然后控制台输出。
至于必要的五个步骤,已经在代码段的注释中详细列出,这里就不再多说。
需要注意的是,上边的代码若要成功运行,就必须要导入mysql的java驱动包,因为所谓的驱动类就在这个驱动包中,如果是maven项目,可以采用类似下边的配置:

<dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.38</version>
 </dependency>

为什么要用mybatis

如果所有的数据库操作都如上边例子一样简单,那么可能直接使用这种原始jdbc代码就好了,但实际上大多数实际业务都不可能这么简单。
随着业务的复杂,jdbc代码也就会逐渐变得不忍直视,不论是对于参数的判断,还是结果集和实体类赋值的转换,都会使代码越来越复杂。
而mybatis等持久层框架,很主要的功能就是解决了这种问题,使我们对参数的判断、结果集映射等工作变得更加简单,对原始jdbc的操作我们不用管,mybatis替我们管。
随着业务复杂度的提升,对数据库sql复杂度的提升,mybatis能简化的工作,对于那些多出来的配置而言,就会显得微不足道。这也就是为什么使用mybatis需要导入更多jar包,需要更多配置,看起来似乎更复杂了,结果却有那么多地方使用的原因。

原文地址http://www.bieryun.com/3561.html

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3月前
|
缓存 NoSQL Java
Mybatis学习:Mybatis缓存配置
MyBatis缓存配置包括一级缓存(事务级)、二级缓存(应用级)和三级缓存(如Redis,跨JVM)。一级缓存自动启用,二级缓存需在`mybatis-config.xml`中开启并配置映射文件或注解。集成Redis缓存时,需添加依赖、配置Redis参数并在映射文件中指定缓存类型。适用于查询为主的场景,减少增删改操作,适合单表操作且表间关联较少的业务。
|
6月前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
1232 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
6月前
|
SQL Java 数据库连接
JDBC存在什么问题?MyBatis是如何解决的?
本文详细探讨了JDBC(Java Database Connectivity)在实际应用中存在的问题,如代码繁琐、资源管理困难、SQL语句硬编码、缺乏对象映射及事务管理和缓存支持不足等。JDBC的核心组件包括`DriverManager`、`Connection`、`Statement`、`ResultSet`和`SQLException`。为了解决这些问题,文章介绍了MyBatis框架的优势,如简化代码编写、自动资源管理、SQL与代码分离、支持对象关系映射(ORM)、简化事务管理和内置缓存机制。通过具体示例展示了MyBatis如何优化数据库操作。理解JDBC的原理有助于更好地掌握ORM框架。
83 0
|
7月前
|
Java 关系型数据库 数据库连接
mybatis-plus学习
MyBatis-Plus ,MyBatis 最佳搭档,只做增强不做改变,为简化开发、提高效率而生。
92 5
|
7月前
|
Java 数据库连接 数据库
SpringBoot 整合jdbc和mybatis
本文详细介绍了如何在SpringBoot项目中整合JDBC与MyBatis,并提供了具体的配置步骤和示例代码。首先,通过创建用户实体类和数据库表来准备基础环境;接着,配置Maven依赖、数据库连接及属性;最后,分别展示了JDBC与MyBatis的集成方法及其基本操作,包括增删查改等功能的实现。适合初学者快速入门。
201 3
SpringBoot 整合jdbc和mybatis
|
7月前
|
SQL 存储 Java
原生JDBC简单实现Mybatis核心功能
本文介绍了在Vertx项目中使用Tdengine时,因缺乏异步JDBC驱动而采用同步驱动结合`vertx.executeBlocking`实现异步查询的方法。文中详细描述了自行开发的一个简易JDBC工具,该工具实现了SQL参数绑定与返回值映射至实体类的功能,简化了原生JDBC的繁琐操作。通过具体示例展示了其实现过程及代码细节,并与原生JDBC进行了对比,突显了其便捷性和实用性。
110 5
|
8月前
|
Web App开发 前端开发 关系型数据库
基于SpringBoot+Vue+Redis+Mybatis的商城购物系统 【系统实现+系统源码+答辩PPT】
这篇文章介绍了一个基于SpringBoot+Vue+Redis+Mybatis技术栈开发的商城购物系统,包括系统功能、页面展示、前后端项目结构和核心代码,以及如何获取系统源码和答辩PPT的方法。
|
8月前
|
Java 数据库连接 mybatis
基于SpringBoot+MyBatis的餐饮点餐系统
本文介绍了一个基于SpringBoot和MyBatis开发的餐饮点餐系统,包括系统的主控制器`IndexController`的代码实现,该控制器负责处理首页、点餐、登录、注册、订单管理等功能,适用于毕业设计项目。
103 0
基于SpringBoot+MyBatis的餐饮点餐系统
|
8月前
|
SQL Java 数据库连接
后端框架的学习----mybatis框架(5、分页)
这篇文章介绍了如何在MyBatis框架中实现分页功能,包括使用SQL的`limit`语句进行分页和利用MyBatis的`RowBounds`对象进行分页的方法。
|
1月前
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于注解的整合
本文介绍了Spring Boot集成MyBatis的两种方式:基于XML和注解的形式。重点讲解了注解方式,包括@Select、@Insert、@Update、@Delete等常用注解的使用方法,以及多参数时@Param注解的应用。同时,针对字段映射不一致的问题,提供了@Results和@ResultMap的解决方案。文章还提到实际项目中常结合XML与注解的优点,灵活使用两者以提高开发效率,并附带课程源码供下载学习。
39 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等