mybatis学习笔记(1)-mybatis概述

JDBC介绍

在JavaWeb开发中,必须要面对的一个问题就是用Java访问数据库,对此Java提供了一套API名叫JDBC(Java Database Connectivity),它是Java访问数据库的一种规范。通过使用JDBC中的接口和类,可以使Java客户端程序访问数据库,比如建立数据库连接、执行SQL语句进行数据的存取操作。

Java使用JDBC访问数据库的步骤为:

  1. 得到数据库驱动程序
  2. 创建数据库连接
  3. 执行SQL语句
  4. 得到结果集
  5. 对结果集做相应的处理(增,删,改,查)
  6. 关闭资源:这里释放的是DB中的资源

按照以上步骤,编写一个JDBC的入门程序如下:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

/** * Created by CrowHawk on 17/3/15. */
public class JdbcTest {
    public static void main(String[] args) throws Exception{
        String url = "jdbc:mysql://localhost:3306/OrderForm";
        String username = "root";
        String password = "wyj";
        Class.forName("com.mysql.jdbc.Driver");//加载数据库驱动
        Connection conn = DriverManager.getConnection(url, username, password);通过驱动管理类获取数据库链接
        Statement statement = conn.createStatement();//获取用于向数据库发送sql语句的statement
        String sql = "select * from user";//定义sql语句
        ResultSet resultSet = statement.executeQuery(sql);//向数据库发sql,并获取结果集
        while (resultSet.next()){//取出结果集的数据
            System.out.println("id = " + resultSet.getObject("id"));
            System.out.println("username = " + resultSet.getObject("username"));
            System.out.println("birthday = " + resultSet.getObject("birthday"));
            System.out.println("sex = " + resultSet.getObject("sex"));
            System.out.println("address = " + resultSet.getObject("address"));
        }
        //释放资源
        resultSet.close();
        statement.close();
        conn.close();
    }
}

但是如果要用原生JDBC开发JavaWeb项目,则会存在很多问题:

  1. 数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁的开启和关闭,造成数据库的资源浪费,影响数据库的性能。
  2. 将SQL语句硬编码到Java代码中,如果SQL语句修改,需要重新编译Java代码,不利于系统维护。
  3. 向preparedStatement中设置参数,把占位符和参数硬编码在Java代码中,不利于系统维护。
  4. 从resultSet中遍历获取结果集数据时,对table的字段存在硬编码,不利于系统维护。

为了解决这些问题,可以提出如下设想:

  1. 使用数据库连接池来管理数据库的连接。
  2. 将SQL语句配置在XML文件中,即使SQL变化,不需要对Java代码进行重新编译。
  3. 将SQL语句及占位符号和参数都配置在XML配置文件中。
  4. 将查询的结果集自动映射为Java对象。

而MyBatis则恰好实现了这些设想。

Mybatis

Mybatis是什么

MyBatis 本是 apache 的一个开源项目 iBatis , 2010年这个项目由 apache software foundation 迁移到了 google code,并且改名为 MyBatis 。

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及对结果集的检索封装。MyBatis 可以对配置和原生 Map 使用简单的 XML 或注解,将接口和 Java 的 POJO(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。

MyBatis 的主要思想是将程序中的大量 SQL 语句抽取出来,配置在配置文件中,以实现 SQL 的灵活配置。

MyBatis 并不完全是一种 ORM 框架,它的设计思想和 ORM 相似,只是它允许直接编写 SQL 语句,使得数据库访问更加灵活。因此,准确地说,MyBatis 提供了一种“半自动化”的 ORM 实现,是一种 “SQL Mapping” 框架。

功能架构

Mybatis的功能架构分为三层:
这里写图片描述

  • API接口层:提供给外部使用的接口 API,开发人员通过这些本地 API
    来操纵数据库。接口层一接收到调用请求就会调用数据处理层来完成具体的数据处理。
  • 数据处理层:负责具体的 SQL 查找、SQL 解析、SQL 执行和执行结果映射处理等。它主要的目的是根据调用的请求完成一次数据库操作。
  • 基础支撑层:负责最基础的功能支撑,包括连接管理、事务管理、配置加载和缓存处理,这些都是共用的东西,将他们抽取出来作为最基础的组件,为上层的数据处理层提供最基础的支撑。
框架结构

这里写图片描述

具体流程如下:

  1. 配置mybatis的配置文件SqlMapConfig.xml
  2. 通过配置文件加载MyBatis运行环境,创建SqlSessionFactory会话工厂(使用单例模式)。
  3. 通过SqlSessionFactory创建SqlSession。SqlSession提供了操作数据库的各种方法(它的实现对象是线程不安全的,建议把SqlSession写在方法体内)。
  4. 调用SqlSession的方法去操作数据。如果需要提交事务,需要执行SqlSession的commit()方法。
  5. 释放资源,关闭SqlSession。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
旅游社交小程序功能有管理员和用户。管理员有个人中心,用户管理,每日签到管理,景点推荐管理,景点分类管理,防疫查询管理,美食推荐管理,酒店推荐管理,周边推荐管理,分享圈管理,我的收藏管理,系统管理。用户可以在微信小程序上注册登录,进行每日签到,防疫查询,可以在分享圈里面进行分享自己想要分享的内容,查看和收藏景点以及美食的推荐等操作。因而具有一定的实用性。 本站后台采用Java的SSM框架进行后台管理开发,可以在浏览器上登录进行后台数据方面的管理,MySQL作为本地数据库,微信小程序用到了微信开发者工具,充分保证系统的稳定性。系统具有界面清晰、操作简单,功能齐全的特点,使得旅游社交小程序管理工作系统化、规范化。 管理员可以管理用户信息,可以对用户信息添加修改删除。管理员可以对景点推荐信息进行添加修改删除操作。管理员可以对分享圈信息进行添加,修改,删除操作。管理员可以对美食推荐信息进行添加,修改,删除操作。管理员可以对酒店推荐信息进行添加,修改,删除操作。管理员可以对周边推荐信息进行添加,修改,删除操作。 小程序用户是需要注册才可以进行登录的,登录后在首页可以查看相关信息,并且下面导航可以点击到其他功能模块。在小程序里点击我的,会出现关于我的界面,在这里可以修改个人信息,以及可以点击其他功能模块。用户想要把一些信息分享到分享圈的时候,可以点击新增,然后输入自己想要分享的信息就可以进行分享圈的操作。用户可以在景点推荐里面进行收藏和评论等操作。用户可以在美食推荐模块搜索和查看美食推荐的相关信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值