学习内容:
    css权重,css的引入方式
    直播课—-JDBC封装第一天

    代码练习:
    /*
    如果像以下这样写的代码 会有JDBC连接过程的代码冗余 而除去Query,增加,修改,删除,他们差的只有SQL语句和预处理?的值
    思考:那么我可以将这两个作为参数 封装一个方法 然后增加 修改 删除 只需要调这个方法,三遍只需要写一遍流程
    从而代码得到优化
    */

    未优化的代码:
    //===================================================================================//

    1. package dao;
    2. import domain.Atm;
    3. import java.sql.Connection;
    4. import java.sql.DriverManager;
    5. import java.sql.PreparedStatement;
    6. import java.sql.ResultSet;
    7. public class AtmDao {
    8. /**
    9. *写一些连接数据库时需要用到的参数
    10. /
    11. /**Driver类加载地址*/
    12. private String driver="com.mysql.cj.jdbc.Driver";
    13. /**连接需要的参数url user password*/
    14. private String url = "jdbc:mysql://localhost:3306/atm?serverTimezone=CST&characterEncoding=utf-8";
    15. private String user = "root";
    16. private String password = "at123123";
    17. /**
    18. * 由于新增一条记录 删除一条记录 修改一条记录 代码中除了sql语句和预处理?的值不同,其他的代码都一样
    19. * 如果进行优化的话 参数问题??--->因为只有sql不同,那么参数需要传一条sql 预处理用动态参数列表
    20. * 若这样封装可以省2次的代码
    21. * 返回值-->可有可无 可以是修改的行数 或者 无
    22. * */
    23. //查询一条记录
    24. public Atm queryOne(String uname){
    25. Atm atm = null;
    26. try {
    27. Class.forName(driver);
    28. Connection conn = DriverManager.getConnection(url, user, password);
    29. String sql = "SELECT UNAME,UPASSWORD,UBAL FROM USER WHERE UNAME=?";
    30. PreparedStatement pstat = conn.prepareStatement(sql);
    31. pstat.setString(1,uname);
    32. ResultSet rst = pstat.executeQuery();
    33. while (rst.next()){
    34. atm = new Atm();
    35. atm.setUname(rst.getString("UNAME"));
    36. atm.setUpassword(rst.getString("UPASSWORD"));
    37. atm.setUbal(rst.getFloat("UBAL"));
    38. }
    39. rst.close();
    40. pstat.close();
    41. conn.close();
    42. } catch (Exception e) {
    43. e.printStackTrace();
    44. }
    45. return atm;
    46. }
    47. //更新一条记录
    48. public void update(Atm atm){
    49. try {
    50. Class.forName(driver);
    51. Connection conn = DriverManager.getConnection(url, user, password);
    52. String sql = "UPDATE USER SET UPASSWORD=?,UBAL=? WHERE UNAME=?";
    53. PreparedStatement pstat = conn.prepareStatement(sql);
    54. pstat.setString(1,atm.getUpassword());
    55. pstat.setFloat(2,atm.getUbal());
    56. pstat.setString(3,atm.getUname());
    57. pstat.executeUpdate();
    58. pstat.close();
    59. conn.close();
    60. } catch (Exception e) {
    61. e.printStackTrace();
    62. }
    63. }
    64. //增加一条记录
    65. public void insert(Atm atm){
    66. try {
    67. Class.forName(driver);
    68. Connection conn = DriverManager.getConnection(url, user, password);
    69. String sql = "INSERT INTO USER VALUES(?,?,?)";
    70. PreparedStatement pstat = conn.prepareStatement(sql);
    71. pstat.setString(1,atm.getUname());
    72. pstat.setString(2,atm.getUpassword());
    73. pstat.setFloat(3,atm.getUbal());
    74. pstat.executeUpdate();
    75. pstat.close();
    76. conn.close();
    77. } catch (Exception e) {
    78. e.printStackTrace();
    79. }
    80. }
    81. //删除一条记录
    82. public void delete(String uname){
    83. try {
    84. Class.forName(driver);
    85. Connection conn = DriverManager.getConnection(url, user, password);
    86. String sql = "DELETE FROM USER WHERE UNAME=?";
    87. PreparedStatement pstat = conn.prepareStatement(sql);
    88. pstat.setString(1,uname);
    89. pstat.executeUpdate();
    90. pstat.close();
    91. conn.close();
    92. } catch (Exception e) {
    93. e.printStackTrace();
    94. }
    95. }
    96. }

    //===================================================================================//

    通过直播课的学习———->优化后的代码

    //===================================================================================//

    1. package dao;
    2. import domain.Atm;
    3. import java.sql.Connection;
    4. import java.sql.DriverManager;
    5. import java.sql.PreparedStatement;
    6. import java.sql.ResultSet;
    7. public class AtmDao {
    8. /**
    9. *写一些连接数据库时需要用到的参数
    10. **/
    11. //Driver类加载地址
    12. private String driver="com.mysql.cj.jdbc.Driver";
    13. //连接需要的参数url user password
    14. private String url = "jdbc:mysql://localhost:3306/atm?serverTimezone=CST&characterEncoding=utf-8";
    15. private String user = "root";
    16. private String password = "at123123";
    17. /**
    18. * 由于新增一条记录 删除一条记录 修改一条记录 代码中除了sql语句和预处理?的值不同,其他的代码都一样
    19. * 如果进行优化的话 参数问题??--->因为只有sql不同,那么参数需要传一条sql 预处理用动态参数列表
    20. * 若这样封装可以省2次的代码
    21. * 返回值-->可有可无 可以是修改的行数 或者 无
    22. * */
    23. private void superUpdate(String sql,Object... objs){
    24. try {
    25. Class.forName(driver);
    26. Connection conn = DriverManager.getConnection(url, user, password);
    27. PreparedStatement pstat = conn.prepareStatement(sql);
    28. for (int i = 0; i <objs.length ; i++) {
    29. pstat.setObject(i+1,objs[i]);
    30. }
    31. pstat.executeUpdate();
    32. pstat.close();
    33. conn.close();
    34. } catch (Exception e) {
    35. e.printStackTrace();
    36. }
    37. }
    38. //查询一条记录
    39. public Atm queryOne(String uname){
    40. Atm atm = null;
    41. try {
    42. Class.forName(driver);
    43. Connection conn = DriverManager.getConnection(url, user, password);
    44. String sql = "SELECT UNAME,UPASSWORD,UBAL FROM USER WHERE UNAME=?";
    45. PreparedStatement pstat = conn.prepareStatement(sql);
    46. pstat.setString(1,uname);
    47. ResultSet rst = pstat.executeQuery();
    48. while (rst.next()){
    49. atm = new Atm();
    50. atm.setUname(rst.getString("UNAME"));
    51. atm.setUpassword(rst.getString("UPASSWORD"));
    52. atm.setUbal(rst.getFloat("UBAL"));
    53. }
    54. rst.close();
    55. pstat.close();
    56. conn.close();
    57. } catch (Exception e) {
    58. e.printStackTrace();
    59. }
    60. return atm;
    61. }
    62. //更新一条记录
    63. public void update(Atm atm){
    64. String sql = "UPDATE USER SET UPASSWORD=?,UBAL=? WHERE UNAME=?";
    65. this.superUpdate(sql,atm.getUpassword(),atm.getUbal(),atm.getUname());
    66. }
    67. //增加一条记录
    68. public void insert(Atm atm){
    69. String sql = "INSERT INTO USER VALUES(?,?,?)";
    70. this.superUpdate(sql,atm.getUname(),atm.getUpassword(),atm.getUbal());
    71. }
    72. //删除一条记录
    73. public void delete(String uname){
    74. String sql = "DELETE FROM USER WHERE UNAME=?";
    75. this.superUpdate(sql,uname);
    76. }
    77. }
    78. }

    学习总结:
    学懂的:

    通过今天的学习 3种CSS的引入格式,每种引入的格式的优先级都不一样,若他们同时出现
    最重要的(是会通过一层一层的去计算他们的权重值)

    通过晚上JDBC的封装课程,直播课完全可以听懂的,自己多加练习,总结为:在几个方法的
    代码基本一样的时候,应该去思考他们不一样的地方,思考是再写一个类还是再写一个方法
    把不一样的内容当作参数,而这个参数的设计每种情况需要思考的不一样,再而他们的返回值
    问题,需要多练习这种环境该如何设计。
    而不是像使用Mybaits一样只知道注解那么写,一把梭。

    有问题的地方:

    直播课程没有没听懂的….
    CSS我没有去专门背每个选择器的权重值,等我先把前端复习过完,Web框架完了之后再去背这个。