zoukankan      html  css  js  c++  java
  • Mybatis

    、什么是Mybatis

    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。

    MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

    二、Mybatis相对JDBC有哪些优势

    jdbc连接数据库的连接方法:

    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", "root", "root");
                    //3、定义sql语句 ?表示占位符
                        String sql = "select * from user where username = ?";
                    //4、获取预处理statement
                    preparedStatement = connection.prepareStatement(sql);
                    //5、设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值
                    preparedStatement.setString(1, "王五");
                    //6、向数据库发出sql执行查询,查询出结果集
                    resultSet =  preparedStatement.executeQuery();
                    //7、遍历查询结果集
                    while(resultSet.next()){
                        User user 
                        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) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                    if(preparedStatement!=null){
                        try {
                            preparedStatement.close();
                        } catch (SQLException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                    if(connection!=null){
                        try {
                            connection.close();//关闭数据库连接
                        } catch (SQLException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
    
                }
    
            }

    通过上面的一段jdbc连接数据代码,我们看有哪些不好的地方:

    1.在创建connection的时候,存在硬编码问题(也就是直接把连接信息写死,不方便后期维护)

    2.preparedStatement对象在执行sql语句的时候存在硬编码问题。

    3.每次在进行一次数据库连接后都会关闭数据库连接,频繁的开启/关闭数据连接影响性能。

    简单的说一下mybatis相对jdbc的优势:

    1.mybatis是把连接数据库的信息都是写在配置文件中,因此不存在硬编码问题,方便后期维护。

    2.mybatis执行的sql语句都是通过配置文件进行配置,不需要写在java代码中。

    3.mybatis的连接池管理、缓存管理等让连接数据库和查询数据效率更高。

    三、Mybatis框架的原理介绍

    四、Mybatis全局配置文件

    SqlMapConfig.xml是Mybatis的全局配置文件,它的名称可以是任意,但是一般命名都为(SqlMapConfig)

    4.1.全局配置文件的类容和顺序

    Properties(属性)

    Settings(全局参数设置)

    typeAliases(类型别名)

    typeHandlers(类型处理器)

    objectFactory(对象工厂)

    plugins(插件)

    environments(环境信息集合)

    environment(单个环境信息)

    transactionManager(事物)

    dataSource(数据源)

    mappers(映射器)

    4.2.常见配置详解

    properties标签:

    Mybatis可以通过该标签来读取java配置信息:

    例如在工程中对数据源信息写在db.properties文件中,可以通过properties标签来加载该文件。

    db.properties:

    db.driver=com.mysql.jdbc.Driver
    db.url=jdbc:mysql://localhost:3306/mybatis
    db.username=root
    db.password=12345678

    SqlMapConfig.xml使用properties标签:

    <!-- 通过properties标签,读取java配置文件的内容 -->
    <properties resource="db.properties" />
    
    <!-- 配置mybatis的环境信息 -->
    <environments default="development">
        <environment id="development">
            <!-- 配置JDBC事务控制,由mybatis进行管理 -->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 配置数据源,采用dbcp连接池 -->
            <dataSource type="POOLED">
                <property name="driver" value="${db.driver}"/>
                <property name="url" value="${db.url}"/>
                <property name="username" value="${db.username}"/>
                <property name="password" value="${db.password}"/>
            </dataSource>
        </environment>
    </environments>
  • 相关阅读:
    ntpdate
    动态查看日志
    eclipse proxy
    远程调试
    pe and elf
    03scikit-learn非监督学习
    15管家婆小项目
    02scikit-learn模型训练
    01scikit-learn数据集下载
    scikit-learn中文api
  • 原文地址:https://www.cnblogs.com/www-tty-com/p/14003908.html
Copyright © 2011-2022 走看看