zoukankan      html  css  js  c++  java
  • 深入浅出Mybatis(二)环境搭建

    环境

    • mybatis-3.2.7.jar

    • IDEA

    • mysql数据库

    • mysql数据库驱动,mysql-connector-java-5.1.7-bin.jar

    搭建过程

     创建mysql数据库

          这里咱们创建一个名字为mybatis的数据库,创建一个名为user的表。表的字段如下:

    CREATE TABLE `user` (
      `id` int(11) NOT NULL,
      `username` varchar(32) NOT NULL,
      `birthday` date DEFAULT NULL,
      `sex` char(1) DEFAULT NULL,
      `address` varchar(256) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    


    创建java工程

      创建完的效果如下:

    右击项目添加文件夹,命名为lib,用于加入mybatis核心包、依赖包、数据驱动包。效果图如下:

     

    加入jar包

          要加入的jar包包括: mybatis核心包、依赖包、数据驱动包。如果要进行单元测试,需要添加junit.jar。这里小编用单元测试,添加了junit-4.9.jar。

     

    把jar包 Add to Build Path中:

     

    log4j.properties

          mybatis默认使用log4j作为输出日志信息。右击src->new->File,新建名为log4j.properties的文件。

     

    在其中输入下面的代码:

    log4j.rootLogger=DEBUG, stdout 
    # Console output...
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

      效果如下:

     

    SqlMapConfig.xml

          SqlMapConfig.xml是mybatis核心配置文件,上边文件的配置内容为数据源、事务管理。

          在src下创建SqlMapConfig.xml,如下:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
        <!-- 和spring整合后 environments配置将废除 -->
        <environments default="development">
            <environment id="development">
                <!-- 使用jdbc事务管理 -->
                <transactionManager type="JDBC" />
                <!-- 数据库连接池 -->
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver" />
                    <property name="url"
                              value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" />
                    <property name="username" value="root" />
                    <property name="password" value="123" />
                </dataSource>
            </environment>
        </environments>
    </configuration>
    

     

    测试JDBC连接

          在src下建立一个名为com.dtt.mybatis的包,在包里面建立一个名为JdbcTest的类,添加如下的代码:

    package com.dtt.mybatis;
    import java.sql.*;
    
    public class Jdbctest {
        /**
         *步骤
         *1、 加载数据库驱动
         *2、 创建并获取数据库链接
         *3、 创建jdbc statement对象
         *4、 设置sql语句
         *5、 设置sql语句中的参数(使用preparedStatement)
         *6、 通过statement执行sql并获取结果
         *7、 对sql执行结果进行解析处理
         *8、 释放资源(resultSet、preparedstatement、connection)*/
        public static void main(String[] args) {
            //数据库连接
            Connection connection=null;
            //预编译的statement 好处t提高了数据库的性能
            PreparedStatement preparedStatement=null;
            //结果对象
            ResultSet resultSet=null;
            try {
                //加载数据库驱动
                Class.forName("com.mysql.jdbc.Driver");
                //通过驱动管理获取数据连接
                connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8", "root", "123");
                //定义sql语句 ?表示占位符
                String sql="select * from user where username = ?";
                //获取预处理statement
                preparedStatement= connection.prepareStatement(sql);
                //设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值
            preparedStatement.setString(1,"小杜");
    // 向数据库发出sql执行查询,查询出结果集
        resultSet = preparedStatement.executeQuery();
        while (resultSet.next()){
            System.out.println(resultSet.getString("id")+""+resultSet.getString("username"));
        }
    
            } 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();
                            }
                        }
                    }
                }
            }
        }
    }
    

     

     在这个测试程序中我们使用的是最传统的与数据库交互的方式,使用preparedStatement向占位符传递参数,使用传统的JDBC的时候会有一些问题:

           1. 数据库链接创建、释放频繁造成系统资源浪费。从而影响系统性能,如果使用数据库连接池可以解决此问题。

           2. Sql语句在代码中写死了。如“select * from user where username = ?”,为硬编码。造成代码不易维护,实际应用sql变化可能较大,sql变动需要改变java代码。

           3. 使用preparedStatement向占位符传递参数存在硬编码。因为sql语句的where条件不一定,可能多也可能少,修改sql还要修改代码,系统不易维护。

           4. 输出的结果集解析存在硬编码。sql变化导致解析代码变化,系统不易维护,如果将数据库揭露封装成pojo对象解析比较简单。

    先学习到这里下一篇继续讲解入门知识

  • 相关阅读:
    安装VMtools vim编辑器的使用 压缩包命令 Linux下的用户管理 (第三天)
    VM虚拟机安装 常用Linux命令 网卡配置 (第二天)
    数据库的交互模式 常用的dos命令 (第一天)
    Validate US Telephone Numbers FreeCodeCamp
    Arguments Optional FreeCodeCamp
    Everything Be True FreeCodeCamp
    Binary Agents FreeCodeCamp
    Steamroller FreeCodeCamp
    Drop it FreeCodeCamp
    Smallest Common Multiple FreeCodeCamp
  • 原文地址:https://www.cnblogs.com/mtime2004/p/9857317.html
Copyright © 2011-2022 走看看