201521123014 《Java程序设计》第14周学习总结

1. 本周学习总结

1.1 以你喜欢的方式(思惟导图或其余)概括总结多数据库相关内容。

数据库是为了实现必定目的按某种规则组织起来的“数据”的“集合”。常见的数据库管理软件有不少,咱们主要用的是MySQL。
MySql数据库简单操做:一. 启动与退出 1.启动MySQL Command Line Client(MySQL的控制台界面),直接输入安装时的密码便可。此时的提示符为:mysql>.2. 退出MySQL:quit或exit
库操做:显示全部数据库: show databases; 建立数据库:     create database test; 删除数据库:     drop database test;链接数据库:     use test;查看当前链接的数据库: select database();当前数据库包含的表:  show tables; 
3、表操做2.删除表  drop table students; 3.插入数据 insert into students(stuno,name,gender,birthdate,major,age) values('201010001', 'zhangsan', 'm', '1992-10-01','cs',25);4. 查询表中的数据 select * from students;5. 删除表中数据删除students表中编号为1 的记录delete from students where id = 1; 

JDBC简介:咱们刚才是以命令行的方式来操做数据库?那么怎样使用java代码来操做数据库呢?可使用Java中的JDBC API.java.sql.DriverManager:加载驱动、创建链接做用:载入各类不一样的JDBC驱动
java.sql.Connection  :数据库链接
java.sql.Statement   :处理链接中的SQL语句
java.sql.ResultSet   :处理结果集

JDBC编程通常步骤
1.与数据库创建链接(Connection)
2.向数据库发送SQL语句(statement)
3.得到和处理查询或更新语句返回的结果 
注:使用查询语句可得到ResultSet
4.关闭链接,释放资源
通常来讲ResultSet、Statement、Connection使用完后要马上关闭


2. 书面做业

Q1 MySQL数据库基本操做

创建数据库,将本身的姓名、学号做为一条记录插入。(截图,需出现本身的学号、姓名)

在本身创建的数据库上执行常见SQL语句(截图)

Q2 使用JDBC链接数据库与Statement

2.1 使用Statement操做数据库。(粘贴一段你认为比较有价值的代码,出现学号)

//201521123014
public class JDBCTest {  
    /** 
     * 使用JDBC链接并操做mysql数据库 
     */  
    public static void main(String[] args) {  
        // 数据库驱动类名的字符串  
        String driver = "com.mysql.jdbc.Driver";  
        // 数据库链接串  
        String url = "jdbc:mysql://127.0.0.1:3306/jdbctest";  
        // 用户名  
        String username = "root";  
        // 密码  
        String password = "mysqladmin";  
        Connection conn = null;  
        Statement stmt = null;  
        ResultSet rs = null;  
        try {  
            // 一、加载数据库驱动( 成功加载后,会将Driver类的实例注册到DriverManager类中)  
            Class.forName(driver );  
            // 二、获取数据库链接  
            conn = DriverManager.getConnection(url, username, password);  
            // 三、获取数据库操做对象  
            stmt = conn.createStatement();  
            // 四、定义操做的SQL语句  
            String sql = "select * from user where id = 100";  
            // 五、执行数据库操做  
            rs = stmt.executeQuery(sql);  
            // 六、获取并操做结果集  
            while (rs.next()) {  
                System.out.println(rs.getInt("id"));  
                System.out.println(rs.getString("name"));  
            }  
        } catch (Exception e) {  
            e.printStackTrace();  
        } finally {  
            // 七、关闭对象,回收数据库资源  
            if (rs != null) { //关闭结果集对象  
                try {  
                    rs.close();  
                } catch (SQLException e) {  
                    e.printStackTrace();  
                }  
            }  
            if (stmt != null) { // 关闭数据库操做对象  
                try {  
                    stmt.close();  
                } catch (SQLException e) {  
                    e.printStackTrace();  
                }  
            }  
            if (conn != null) { // 关闭数据库链接对象  
                try {  
                    if (!conn.isClosed()) {  
                        conn.close();  
                    }  
                } catch (SQLException e) {  
                    e.printStackTrace();  
                }  
            }  
        }  
    }  
}

2.2 使用JDBC操做数据库主要包含哪几个步骤?

1)加载(注册)数据库驱动(到JVM)。
2)创建(获取)数据库链接。
3)建立(获取)数据库操做对象。
4)定义操做的SQL语句。
5)执行数据库操做。
6)获取并操做结果集。
7)关闭对象,回收数据库资源(关闭结果集-->关闭数据库操做对象-->关闭链接)。

Q3 PreparedStatement与参数化查询

3.1 使用PreparedStatement根据用户指定的查询条件进行查询。(粘贴一段你认为比较有价值的代码,出现学号)

3.2 批量更新-批量插入1000个学生,统计整个操做所消耗的时间。(使用方法executeBatch)

Q4 JDBCUtil与DAO

4.1 粘贴一段你认为比较有价值的代码,出现学号

public class BaseDao {

    // 初始化参数
    private Connection con;
    private PreparedStatement pstmt;
    private ResultSet rs;

 public void update(String sql,Object[] paramsValue){

        try {
            // 获取链接
            con = JdbcUtil.getConnection();
            // 建立执行命令的stmt对象
            pstmt = con.prepareStatement(sql);
            // 参数元数据: 获得占位符参数的个数
            int count = pstmt.getParameterMetaData().getParameterCount();

            // 设置占位符参数的值
            if (paramsValue != null && paramsValue.length > 0) {
                // 循环给参数赋值
                for(int i=0;i<count;i++) {
                    pstmt.setObject(i+1, paramsValue[i]);
                }
            }
            // 执行更新
            pstmt.executeUpdate();

        } catch (Exception e) {
            throw new RuntimeException(e);
        } finally {
            JdbcUtil.closeAll(con, pstmt, null);
        }
}
编写实际操做的Dao类继承自BaseDao
public class AdminDao extends BaseDao {

    // 删除
    public void delete(int id) {
        String sql = "delete from admin where id=?";
        Object[] paramsValue = {id};
        super.update(sql, paramsValue);
    }

    // 插入
    public void insert(Admin admin) {
        String sql = "insert into admin (userName,pwd) values (?,?)";
        Object[] paramsValue = {admin.getUserName(),admin.getPwd()};
        super.update(sql, paramsValue);
    }

    // 查询所有
    public List<Admin> getAll(){
        String sql = "select * from admin";
        List<Admin> list = super.query(sql, null, Admin.class);
        return list;
    }

    // 根据条件查询(主键)
    public Admin findById(int id){
        String sql = "select * from admin where id=?";
        List<Admin> list = super.query(sql, new Object[]{id}, Admin.class);
        return  (list!=null&&list.size()>0) ? list.get(0) : null;
    }
}

4.2 使用DAO模式访问数据库有什么好处?

DAO (Data Access Objects) 数据访问对象,这些对象用于访问修改数据库。这样作的好处是,数据库的修改只要修改DAO层的访问方式就能够了,不用整个项目都进行修改。隔离业务逻辑代码和数据访问代码,
隔离不一样数据库的实现。html

Q5 使用数据库改造购物车系统

5.1 使用数据库改造之前的购物车系统(应有图形界面)。若是之前为完成购物车系统,可编写基于数据库的学生管理系统。包括对学生的增删改查,要求使用。

5.2 相比较使用文件,使用数据库存储与管理数据有何不同?

  1. 使用文件操做数据,须要打开文件和关闭文件,而用数据库来操做数据,只须要输入命令来实现数据的存储等功能,更加简单。
  2. 数据库还能够储存大量数据。
  3. 查看数据库的数据须要有密码的输入,而文件是任何人均可以查看,比较的话,数据库更安全

3. 码云

3.1. 码云代码提交记录

在码云的项目中,依次选择“统计-Commits历史-设置时间段”, 而后搜索并截图java


4 课外阅读

4.2 代码结构中Dao,Service,Controller,Util,Model是什么意思,为何划分

Model是模型,通常而言,会有人分的更细,VO,DTO等等。我并不推荐分的更细,这个Model经常和持久化的数据一一对应,如Mysql和MongoDB。
Model承载的做用就是数据的抽象,描述了一个数据的定义,Model的实例就是一组组的数据。整个系统均可以当作是数据的 流动,既然要流动,就必定是有流动的载体。
对于初学者而言,第一个要学会,就是建模,把业务逻辑映射成数据模型。mysql

Util是工具的意思,通常来讲,经常用来描述和业务逻辑没有关系的数据处理。Util通常要和私有方法对比:私有方法通常来讲是只是在特意场景下使用的,私有方法越多,代码结构越乱。常见的重构策略就是首先从一个越长行数的代码里抽象出若干个私有方法,而后再抽出公用的Util。若是有可能,尽量的少用私有方法,而是把他换成一个公用的Util,表明他和业务逻辑是不相关的。一般命名也是ArticleUtil,CommentUtil之类的。sql

Service比Util的概念大不少,它的重点是在于提供一个服务。这个服务可能包括一系列的数据处理,也有可能会调用多个Util,或者是调用别的服务。总归一句话,就是,有什么事情,你来找我。数据库

Dao通常而言,都是用来和底层数据库通讯,负责对数据库的增删改查编程

Controller控制中心,全部的指令,调度都从这里发出去。哪个Service作什么事儿,谁的数据提供给谁,通常而言,都是在Controller里实现的。安全

4.3 mysq数据库管理工具navicat基本使用方法

参考连接工具

相关文章
相关标签/搜索