今天是我们开课的第一天,又要换讲师了,上半年换讲师已经换了3、4个,每当熟悉这个老师的代码要求一旦换老师又得按他的风格去写,很是麻烦,不过这样虽然很烦细想起来还是挺好的,至少这样可以找到适合自己的风格。今天来的这个老师和我是同姓都是陈,也许我们学生真的是井底之蛙,当老师讲起一套套框架,一套套知识,自己竟然……(不说了!)
今天老师讲的是单态模式,所谓的单态模式就是: 1、必须有私有静态的成员变量 2、有私有的构造器 3、有公有返回私有的静态的成员变量方法 我的理解呢就是使用单态模式可避免 Java类被多次实例化,让相同类的全部实例共享。
代码如下:
- package db.util;
- import java.sql.*;
- /**
- * 单态模式: 1、必须有私有静态的成员变量 2、私有的构造器 3、公有返回私有的静态的成员变量方法
- *
- */
- public class DBConn {
- //创建私有静态的成员变量
- private static Connection conn;
- //创建一个私有的构造器
- private DBConn() {
- }
- //创建一个静态的公有的返回静态的成员变量的一个实例的方法
- public static Connection getDBconn() {
- if (conn == null) {
- try {
- System.out.println("-----------------数据库加载驱动并创建连接开始"+System.currentTimeMillis());
- Class.forName("com.mysql.jdbc.Driver");
- conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1/db","root","root");
- System.out.println("-----------------数据库加载驱动并创建连接结束"+System.currentTimeMillis());
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- return conn;
- }
- public static void main(String[] args) {
- // DBConn.getDBconn();
- DBConn db = new DBConn();
- db.getDBconn();
- DBConn db1 = new DBConn();
- db1.getDBconn();
- DBConn.getDBconn();
- }
- }
重点是40-47行,调用了三次但是它只实例化了一次。
接着呢讲了实现数据库的增删改查,很悲哀的是很多代码都不记得了,原来只是封装好了一次性调用,当在漠然回首的时候,我的个亲娘四舅奶奶,基本忘光了,看来初学者长时间不看代码都会forget的,好在今天拾回来了。
这是我写的:
- package dao;
- import java.sql.*;
- import java.util.ArrayList;
- import java.util.List;
- import db.DBConn;
- import bean.Student;
- public class StudentDaoImpl implements StudentDao{
- private Connection conn;
- private PreparedStatement pstmt;
- private ResultSet rs;
- private boolean falg=false;
- public boolean Insert(Student stu){ //增
- conn=DBConn.getDBconn();
- String sql="insert into student(name,age,qq) value(?,?,?)";
- try {
- pstmt = conn.prepareStatement(sql);
- pstmt.setString(1,stu.getName());
- pstmt.setInt(2, stu.getAge());
- pstmt.setInt(3, stu.getQq());
- int s=pstmt.executeUpdate();
- if(s>0){
- falg=true;
- }
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }finally{
- try {
- pstmt.close();
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- return falg;
- }
- @Override
- public List<Student> All() { //查寻所有
- List<Student> stuall= new ArrayList<Student>();
- conn=DBConn.getDBconn();
- String sql="select * from student";
- try {
- pstmt = conn.prepareStatement(sql);
- rs = pstmt.executeQuery();
- while(rs.next()){
- Student stu=new Student();
- stu.setName(rs.getString("name"));
- stu.setAge(rs.getInt("age"));
- stu.setAge(rs.getInt("qq"));
- stuall.add(stu);
- }
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }finally{
- try {
- rs.close();
- pstmt.close();
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- return stuall;
- }
- @Override
- public boolean delete(Student stu,int id) { //删除
- conn=DBConn.getDBconn();
- String sql="delete from student where id="+id;
- try {
- pstmt = conn.prepareStatement(sql);
- int s=pstmt.executeUpdate();
- if(s>0){
- falg=true;
- }
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }finally{
- try {
- pstmt.close();
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- return falg;
- }
- @Override
- public boolean update(Student stu, String name, int age, int qq,int id) { //修改
- conn=DBConn.getDBconn();
- String sql="update student set name='" + name +"',age='"+age+"',qq='"+qq+"' where id='" + id + "'";
- try {
- pstmt = conn.prepareStatement(sql);
- pstmt.execute();
- falg=true;
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }finally{
- try {
- pstmt.close();
- } catch (SQLException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- return falg;
- }
- public static void main(String[] args){
- // for(int i=0;i<=10;i++){
- // Student stu=new Student("哦了",11,888);
- // StudentDaoImpl sdi=new StudentDaoImpl();
- // sdi.Insert(stu);
- // }
- StudentDaoImpl sdi=new StudentDaoImpl();
- // List<Student> allstu=sdi.All();
- // for(Student all : allstu){
- // System.out.println(all.getAge());
- // }
- Student stu=new Student();
- //sdi.delete(stu,3);
- sdi.update(stu, "啊哈", 12, 33333, 5);
- }
- }
最后呢讲的就是网站用的最多的分页,以前做项目经常用到,不过今天又高级了一点,平常做的就是只有上一页,下一页,没有中间的页码1,2,3……………… 其实也不怎么难 代码我就不晒了 我想你懂的!!!