学习内容:
css权重,css的引入方式
直播课—-JDBC封装第一天
代码练习:
/*
如果像以下这样写的代码 会有JDBC连接过程的代码冗余 而除去Query,增加,修改,删除,他们差的只有SQL语句和预处理?的值
思考:那么我可以将这两个作为参数 封装一个方法 然后增加 修改 删除 只需要调这个方法,三遍只需要写一遍流程
从而代码得到优化
*/
未优化的代码:
//===================================================================================//
package dao;import domain.Atm;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;public class AtmDao {/***写一些连接数据库时需要用到的参数//**Driver类加载地址*/private String driver="com.mysql.cj.jdbc.Driver";/**连接需要的参数url user password*/private String url = "jdbc:mysql://localhost:3306/atm?serverTimezone=CST&characterEncoding=utf-8";private String user = "root";private String password = "at123123";/*** 由于新增一条记录 删除一条记录 修改一条记录 代码中除了sql语句和预处理?的值不同,其他的代码都一样* 如果进行优化的话 参数问题??--->因为只有sql不同,那么参数需要传一条sql 预处理用动态参数列表* 若这样封装可以省2次的代码* 返回值-->可有可无 可以是修改的行数 或者 无* *///查询一条记录public Atm queryOne(String uname){Atm atm = null;try {Class.forName(driver);Connection conn = DriverManager.getConnection(url, user, password);String sql = "SELECT UNAME,UPASSWORD,UBAL FROM USER WHERE UNAME=?";PreparedStatement pstat = conn.prepareStatement(sql);pstat.setString(1,uname);ResultSet rst = pstat.executeQuery();while (rst.next()){atm = new Atm();atm.setUname(rst.getString("UNAME"));atm.setUpassword(rst.getString("UPASSWORD"));atm.setUbal(rst.getFloat("UBAL"));}rst.close();pstat.close();conn.close();} catch (Exception e) {e.printStackTrace();}return atm;}//更新一条记录public void update(Atm atm){try {Class.forName(driver);Connection conn = DriverManager.getConnection(url, user, password);String sql = "UPDATE USER SET UPASSWORD=?,UBAL=? WHERE UNAME=?";PreparedStatement pstat = conn.prepareStatement(sql);pstat.setString(1,atm.getUpassword());pstat.setFloat(2,atm.getUbal());pstat.setString(3,atm.getUname());pstat.executeUpdate();pstat.close();conn.close();} catch (Exception e) {e.printStackTrace();}}//增加一条记录public void insert(Atm atm){try {Class.forName(driver);Connection conn = DriverManager.getConnection(url, user, password);String sql = "INSERT INTO USER VALUES(?,?,?)";PreparedStatement pstat = conn.prepareStatement(sql);pstat.setString(1,atm.getUname());pstat.setString(2,atm.getUpassword());pstat.setFloat(3,atm.getUbal());pstat.executeUpdate();pstat.close();conn.close();} catch (Exception e) {e.printStackTrace();}}//删除一条记录public void delete(String uname){try {Class.forName(driver);Connection conn = DriverManager.getConnection(url, user, password);String sql = "DELETE FROM USER WHERE UNAME=?";PreparedStatement pstat = conn.prepareStatement(sql);pstat.setString(1,uname);pstat.executeUpdate();pstat.close();conn.close();} catch (Exception e) {e.printStackTrace();}}}
//===================================================================================//
通过直播课的学习———->优化后的代码
//===================================================================================//
package dao;import domain.Atm;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;public class AtmDao {/***写一些连接数据库时需要用到的参数**///Driver类加载地址private String driver="com.mysql.cj.jdbc.Driver";//连接需要的参数url user passwordprivate String url = "jdbc:mysql://localhost:3306/atm?serverTimezone=CST&characterEncoding=utf-8";private String user = "root";private String password = "at123123";/*** 由于新增一条记录 删除一条记录 修改一条记录 代码中除了sql语句和预处理?的值不同,其他的代码都一样* 如果进行优化的话 参数问题??--->因为只有sql不同,那么参数需要传一条sql 预处理用动态参数列表* 若这样封装可以省2次的代码* 返回值-->可有可无 可以是修改的行数 或者 无* */private void superUpdate(String sql,Object... objs){try {Class.forName(driver);Connection conn = DriverManager.getConnection(url, user, password);PreparedStatement pstat = conn.prepareStatement(sql);for (int i = 0; i <objs.length ; i++) {pstat.setObject(i+1,objs[i]);}pstat.executeUpdate();pstat.close();conn.close();} catch (Exception e) {e.printStackTrace();}}//查询一条记录public Atm queryOne(String uname){Atm atm = null;try {Class.forName(driver);Connection conn = DriverManager.getConnection(url, user, password);String sql = "SELECT UNAME,UPASSWORD,UBAL FROM USER WHERE UNAME=?";PreparedStatement pstat = conn.prepareStatement(sql);pstat.setString(1,uname);ResultSet rst = pstat.executeQuery();while (rst.next()){atm = new Atm();atm.setUname(rst.getString("UNAME"));atm.setUpassword(rst.getString("UPASSWORD"));atm.setUbal(rst.getFloat("UBAL"));}rst.close();pstat.close();conn.close();} catch (Exception e) {e.printStackTrace();}return atm;}//更新一条记录public void update(Atm atm){String sql = "UPDATE USER SET UPASSWORD=?,UBAL=? WHERE UNAME=?";this.superUpdate(sql,atm.getUpassword(),atm.getUbal(),atm.getUname());}//增加一条记录public void insert(Atm atm){String sql = "INSERT INTO USER VALUES(?,?,?)";this.superUpdate(sql,atm.getUname(),atm.getUpassword(),atm.getUbal());}//删除一条记录public void delete(String uname){String sql = "DELETE FROM USER WHERE UNAME=?";this.superUpdate(sql,uname);}}}
学习总结:
学懂的:
通过今天的学习 3种CSS的引入格式,每种引入的格式的优先级都不一样,若他们同时出现
最重要的(是会通过一层一层的去计算他们的权重值)
通过晚上JDBC的封装课程,直播课完全可以听懂的,自己多加练习,总结为:在几个方法的
代码基本一样的时候,应该去思考他们不一样的地方,思考是再写一个类还是再写一个方法
把不一样的内容当作参数,而这个参数的设计每种情况需要思考的不一样,再而他们的返回值
问题,需要多练习这种环境该如何设计。
而不是像使用Mybaits一样只知道注解那么写,一把梭。
有问题的地方:
直播课程没有没听懂的….
CSS我没有去专门背每个选择器的权重值,等我先把前端复习过完,Web框架完了之后再去背这个。
