发表于: 2018-04-01 21:16:03

1 479


编辑日报内容...

一、今天完成的事情

1. 还是增删改查

public List<UserVO> queryAll() throws Exception {
Connection conn = DBUtil.connectDB();
   String sql = "SELECT * FROM jdbctemplate";
   List<UserVO> userList = new ArrayList<UserVO>();
   Statement stmt = (Statement) conn.createStatement();   //创建statement对象
   ResultSet rs = stmt.executeQuery(sql);   //查询之后返回结果集
   while (rs.next()){ //将rs全部进行读取  rs.next()的意思是进行读取结果集的下一条数据;
       //  next()方法返回的是boolean型,用来确认有没有数据
       UserVO user = new UserVO();
       user.setId(rs.getInt("id"));
       user.setName(rs.getString("name"));
       user.setAge(rs.getInt("age"));
       userList.add(user);  
  
   }
return userList;

List<?>   

List指的是集合.<>是泛型,里面指定了这个集合中存放的是什么数据.

比如有一个学生类Student,Student里面包含了学生的一些信息.这样每一个Student对象就代表了一个学生.此时List<Student>就代表这个集合中存放了很多个学生对象,这个集合就像一个班级一样




public static void main(String[] args) throws Exception {
UserDao dao = new UserDao();
   List<UserVO> userList = dao.queryAll();
   for (UserVO user : userList) {
System.out.println(user);
   }
}


输出结果:

String sql = " INSERT INTO jdbctemplate(ID,name,age)VALUES (?,?,?)";
PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement(sql);
//PreparedStatement是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程
//statement每次执行sql语句,相关数据库都要执行sql语句的编译
// preparedstatement是预编译得
// preparedstatement支持批处理
pstmt.setInt(1,user.getId());  // parameterIndex 指定第几个参数的下标
pstmt.setString(2, user.getName());
pstmt.setInt(3,user.getAge());
pstmt.execute();


 

public static void main(String[] args) throws Exception {  //加上throw exception。调用 的地方就必须try catch,不然编译都不过。。

       UserDao dao = new UserDao();

      UserVO userVO = new UserVO();
       userVO.setId(4);
       userVO.setName("Lucy");
       userVO.setAge(25);
//        dao.addUser(userVO);
       try {
dao.addUser(userVO);
           } catch (Exception e) {
e.printStackTrace();
           }


try语句是用来捕捉异常的,捕捉程序在运行时可能出现的异常。

当try语句中出现异常时,会执行catch中的语句,java运行时系统会自动将catch括号中的Exception e 初始化,也就是实例化Exception类型的对象。e是此对象引用名称。然后e(引用)会自动调用Exception类中指定的方法,也就出现了e.printStackTrace() ;。

printStackTrace()方法的意思是:在命令行打印异常信息在程序中出错的位置及原因。


public void deleteUser(int ID) throws Exception {
Connection conn = DBUtil.connectDB();
   String sql = "DELETE FROM jdbctemplate WHERE ID=?";
   PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement(sql);
   pstmt.setInt(1,ID);
   pstmt.execute();
}

try {
dao.deleteUser(1);
   }catch (Exception e){
e.printStackTrace();
}


运行结果


public void updataUser(UserVO user)throws Exception{
Connection conn = DBUtil.connectDB();
   String sql ="UPDATE jdbctemplate SET name=?,age=? WHERE  ID=?";
   PreparedStatement pstmt = (PreparedStatement) conn.prepareStatement(sql);


   pstmt.setString(1,user.getName());
   pstmt.setInt(2,user.getAge());
   pstmt.setInt(3, user.getId());
   pstmt.executeUpdate();

}


userVO.setName("Joohn");
userVO.setAge(26);
userVO.setId(2);

try {
dao.updataUser(userVO);
} catch (Exception e) {
e.printStackTrace();
}




2.学习IOC/DI

图例说明

传统应用程序示意图

有IoC/DI容器后程序结构示意图


Inversion of Control,控制反转

所有的类都会在spring容器中登记,告诉spring你是个什么东西,你需要什么东西,然后spring会在系统运行到适当的时候,把你要的东西主动给你,同时也把你交给其他需要你的东西。所有的类的创建、销毁都由 spring来控制,也就是说控制对象生存周期的不再是引用它的对象,而是spring。对于某个具体的对象而言,以前是它控制其他对象,现在是所有对象都被spring控制,所以这叫控制反转。


Dependency Injection,依赖注入

比如对象A需要操作数据库,以前我们总是要在A中自己编写代码来获得一个Connection对象,有了 spring我们就只需要告诉spring,A中需要一个Connection,至于这个Connection怎么构造,何时构造,A不需要知道。在系统运行时,spring会在适当的时候制造一个Connection,然后像打针一样,注射到A当中,这样就完成了对各个对象之间关系的控制。A需要依赖 Connection才能正常运行,而这个Connection是由spring注入到A中的,依赖注入的名字就这么来的。

二、明天计划的事情:

 学习JDBCtemplate

三、遇到的问题:

 使用sql语句的时候一定要注意空格,没有空格IDEA也不会报错,但就是编译无法通过。我在这里找了好久的错误最后才知道是少了个空格

四、收获:

看了抽象类和接口概念,基本明白怎么去创建使用抽象类和接口

抽象类abstract

接口interface

可以拥有成员变量和普通的成员方法

抽象类可以提供成员方法的实现细节

接口中只能存在public abstract 方法;

抽象类中的成员变量可以是各种类型的

接口中的成员变量只能是public static final类型的;

抽象类可以有静态代码块和静态方法;

接口中不能含有静态代码块以及静态方法

一个类只能继承一个抽象类

一个类却可以实现多个接口。

对一种事物的抽象,即对类抽象

接口是对行为的抽象

抽象类作为很多子类的父类,它是一种模板式设计

接口是一种行为规范,它是一种辐射式设计


任务开始时间:2018年3月1日

预计demo时间:2018年4月20日





返回列表 返回列表
评论

    分享到