00 Mybatis之简介与入门

MyBatis是一款优秀的持久层框架,专注于SQL本身,简化了JDBC的繁琐过程,提供自定义SQL、存储过程等功能。本文介绍了MyBatis的基本概念、原生态JDBC存在的问题、框架设计与核心对象,以及执行过程。通过XML或注解配置,MyBatis能将Java对象映射到数据库记录,实现灵活的数据操作。同时,文章强调了SqlSessionFactory和SqlSession的生命周期和使用注意事项。
摘要由CSDN通过智能技术生成

1 什么是MyBatis

MyBatis的读音是:[mai’bətɪs],中文音译:麦-波蒂斯,MyBatis的前世是ibatis,这个词是由"internet"和"abatis"组合而成,创始人是Clinton Begin。

abatis的读音是:['æbətɪs],其含义是:篱笆墙。篱笆墙又叫栅栏、护栏,是用来保护院子的一种设施,一般都是由木头,棍子,竹子,芦苇、灌木或者石头构成,常见于我国北方农村以及欧美等地广人稀的国家,用于保护院子。

ibatis一词来源于"internet"和"abatis"的组合,其目的是想当做互联网的篱笆墙,是围绕着数据库提供持久化服务的一个框架。并且是一款优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML注解来配置和映射原始类型、接口和Java POJO(Plain Old Java Object,普通老式Java对象)为数据库中的记录。
(1)持久层框架
(2)自定义SQL、存储过程以及高级映射
(3)免除大部分JDBC代码以及设置参数和获取结果集的工作
(4)通过XML注解来配置和映射原始类型、接口和POJO为数据库中的记录

MyBatis是一个优秀的持久层框架,它对JDBC的操作数据库的过程进行封装。这个封装的路线是这样的:java.sql.Statement -> MyBatis的Executor -> MyBatis的SqlSession

MyBatis使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建Connection、创建Statement、手动设置参数、结果集检索等JDBC繁杂的过程代码。

MyBatis通过xml或注解的方式将要执行的各种Statement(Statement、PreparedStatement、CallableStatement)配置起来,并通过Java对象和Statement中的SQL进行映射生成最终执行的SQL语句,最后由MyBatis框架执行SQL并将结果映射成Java对象并返回。

Mybatis主要分为三层:
(1)API接口层,暴露给开发者使用。
(2)核心处理层,实现MyBatis内部流程。
(3)基础模块层,提供通用的模块功能,例如缓存、反射等等功能。

2 分析原生态JDBC程序中存在的问题

1、原生态JDBC程序代码

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    public class Test
    {
   
        public static void main(String[] args)
        {
   
            Connection connection = null;
            PreparedStatement preparedStatement = null;
            ResultSet resultSet = null;

            try
            {
   
                //1、加载数据库驱动
                Class.forName("com.mysql.jdbc.Driver");

                //2、通过驱动管理类获取数据库链接
                connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8","root", "root");

                //3、定义sql语句,?表示占位符
                String sql = "select * from user where username = ?";

                //4、获取预处理statement
                preparedStatement = connection.prepareStatement(sql);

                //5、设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值
                preparedStatement.setString(1, "admin");

                //6、向数据库发出sql执行查询,查询出结果集
                resultSet = preparedStatement.executeQuery();

                //7、遍历查询结果集
                while (resultSet.next())
                {
   
                    System.out.println(resultSet.getString("id") + "  " + resultSet.getString("username"));
                }
            }
            catch (Exception e)
            {
   
                e.printStackTrace();
            }
            finally
            {
   
                //8、释放资源
                if (resultSet != null)
                {
   
                    try
                    {
   
                        resultSet.close();
                    }
                    catch (SQLException e)
                    {
   

                        e.printStackTrace();
                    }
                }
                if (preparedStatement != null)
                {
   
                    try
                    {
   
                        preparedStatement.close();
                    }
                    catch (SQLException e)
                    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值