• 自定义持久层框架设计实现思路


    传统的jdbc代码:

    package com;
    
    import java.sql.*;
    
    /**
     * @author liuyj
     * @Title: JdbcTest
     * @create 2020-05-27 17:31
     * @ProjectName algorithm-Exercise
     * @Description: TODO
     */
    public class JdbcTest {
        public static void main(String[] args) {
            Connection connection=null;
            PreparedStatement preparedStatement=null;
            ResultSet resultSet=null;
            try {
                //加载驱动
                Class.forName("com.mysql.jdbc.Driver");
                //通过驱动管理类来获取数据库连接
                connection= DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis","root","root");
                //定义sql语句 ?表示占位符
                String sql="select * from user where username=?";
                //获取预处理statement
                preparedStatement=connection.prepareStatement(sql);
                //设置参数
                preparedStatement.setString(1,"tom");
                //执行查询获取结果
                resultSet = preparedStatement.executeQuery();
                //遍历查询结果集
                while (resultSet.next()) {
                    int id=resultSet.getInt("id");
                    String username=resultSet.getString("username");
                    System.out.println(username+id);
    
                }
    
            } catch (Exception e) {
                e.printStackTrace();
            }finally {
                //释放资源
                if(resultSet !=null){
                    try {
                        resultSet.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
    
                if (preparedStatement != null) {
    
                    try {
                        preparedStatement.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
    
                if(connection!=null){
                    try {
                        connection.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
    
            }
        }
    }
    
    
    

    jdbc存在的问题:

    自定义框架设计

    使用端(项目):引入自定义持久层框架的jar包

    提供两部分配置信息:数据库配置信息、sql配置信息:sql语句、参数类型、返回值类型

    使用配置文件来提供这两部分信息:

    (1)sqlMapConfig.xml:存放数据库配置信息,引入mapper.xml(存放mapper.xml的全路径)

    (2)Mapper.xml:存放sql语句的配置文件信息

    框架端(自定义持久层框架,本质就是对jdbc代码进行了封装):

    1.读取配置文件

    根据配置文件的路径,加载配置文件成字节输入流,存储在内存中

    创建Resource类
    方法:InputStream getResourceAsStream(String path)

    2.创建两个javabean来存储:存放的就是对配置文件解析出来的内容

    (1)Configuration核心配置类:存放sqlMapConfig.xml解析出来的内容

    (2)MappedStatement:映射配置类,存放mapper.xm解析出来的内容(sql语句,输入参数java类型,输出参数java类型)

    3.解析配置文件:dom4j

    创建类SqlSessionFactoryBuilder 方法:build(InputStream in)

    第一,使用dom4j解析配置文件的内容,将解析出来的内容封装到容器对象中

    第二,创建SqlSessionFactory对象;生产sqlSession:会话对象(工厂模式)

    4.创建SqlSessionFactory接口及实现类DefaultSqlSessionFactory
    第一,openSession:生产sqlSession

    5.创建SqlSession 接口及实现类DefaultSession
    定义对数据库的crud操作:selectList()
    selectOne()
    update()
    delete()

    6.创建Executor接口及实现类SimpleExecutor实现类:
    query(Configuration,MappedStatement,Object... params):执行的是jdbc代码

    欢迎访问:

    易水寒的博客

  • 相关阅读:
    投影机的选择
    IOS 检测摇动
    MARK 我的第一个app完成
    2013年会抽奖程序
    给phpcms v9增加类似于phpcms 2008中的关键词表
    codeigniter 用.htcaccess做动态二级域名解析
    获取优酷、土豆、搜狐视频 HTML5视频m3u8格式源
    发现一个好的文学素材类网站
    mac MAMP下安装mongdb & RockMongo
    给artDialog 5.02 增加ajax get功能
  • 原文地址:https://www.cnblogs.com/liuyj-top/p/12975082.html
Copyright © 2020-2023  润新知