• mybatis由浅入深day01_1课程安排_2对原生态jdbc程序中问题总结


    mybatis 第一天 mybatis的基础知识

    课程安排:

    mybatis和springmvc通过订单商品 案例驱动

    第一天:基础知识(重点,内容量多

      对原生态jdbc程序(单独使用jdbc开发)问题总结

      mybatis框架原理(掌握)

      mybatis入门程序

        用户的增、删、改、查

      mybatis开发dao两种方法:

        原始dao开发方法(程序需要编写dao接口和dao实现类)(掌握)

        mybaits的mapper接口(相当于dao接口)代理开发方法(掌握)

      mybatis配置文件SqlMapConfig.xml

      mybatis核心:

        mybatis输入映射(掌握)

        mybatis输出映射(掌握)

      mybatis的动态sql(掌握)

    第二天:高级知识

      订单商品数据模型分析

      高级结果集映射(一对一、一对多、多对多)

      mybatis延迟加载

      mybatis查询缓存(一级缓存、二级缓存)

      mybaits和spring进行整合(掌握)

      mybatis逆向工程

    对原生态jdbc程序中问题总结

      2.1 环境

    java环境:jdk1.7.0_72

    eclipse:indigo

    mysql:5.1

      2.2 创建mysql数据

    导入下边的脚本:

    sql_table.sql:记录表结构

    sql_data.sql:记录测试数据,在实际企业开发中,最后提供一个初始化数据脚本

      2.3 jdbc程序

    使用jdbc查询mysql数据库中用户表的记录。

    创建java工程,加入jar包:

    数据库驱动包(mysql5.1)

    上边的是mysql驱动。

    下边的是oracle的驱动。

    程序代码JdbcTest.java

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    public class JdbcTest {
        public static void main(String[] args) {
            //数据库连接
            Connection connection = null;
            //预编译的Statement,使用预编译的Statement提高数据库性能
            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", "root");
                // 定义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();
                    }
                }
            }
        }
    }

      2.4 jdbc编程步骤:

    1、 加载数据库驱动

    2、 创建并获取数据库链接

    3、 创建jdbc statement对象

    4、 设置sql语句

    5、 设置sql语句中的参数(使用preparedStatement)

    6、 通过statement执行sql并获取结果

    7、 对sql执行结果进行解析处理

    8、 释放资源(resultSet、preparedstatement、connection)

      2.5 问题总结

    1、数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响 数据库性能。

    设想:使用数据库连接池管理数据库连接。

    2、将sql语句硬编码到java代码中,如果sql 语句修改,需要重新编译java代码,不利于系统维护。

    设想:将sql语句配置在xml配置文件中,即使sql变化,不需要对java代码进行重新编译。

    3、向preparedStatement中设置参数,对占位符号位置和设置参数值,硬编码在java代码中,不利于系统维护。

    设想:将sql语句及占位符号和参数全部配置在xml中。

    4、从resutSet中遍历结果集数据时,存在硬编码,将获取表的字段进行硬编码,,不利于系统维护。

    设想:将查询的结果集,自动映射成java对象,即把数据库记录封装成pojo对象解析。

  • 相关阅读:
    列举ASP.NET 页面之间传递值的几种方式?
    Ajax 完整教程
    ajax 传值,Ajax: Asynchoronous Javascript and xml (异步的js和xml). 异步刷新,异步传递.替代表单提交数据,回调函数处理返回的数据
    Webform 翻页查询.最主要理解这一句代码 return _Context.ChinaStates.Skip((nowpage
    datalist 的用法。也是增删改查,但是比较智能。用数据绑定的方式,可以有不同的显示方法,下面是对一个表的增删改查的参考代码
    bzoj 2705: [SDOI2012]Longge的问题 歐拉函數
    bzoj 1096: [ZJOI2007]仓库建设 斜率優化
    HJA的异或值
    Contest 20140914 Mushroom写情书 字符串雙hash 後綴數組
    Contest 高数题 樹的點分治 樹形DP
  • 原文地址:https://www.cnblogs.com/justdoitba/p/8038494.html
Copyright © 2020-2023  润新知