千锋逆战班,jdbc里面的ORM和DAO

学习java第43天
努力努力在努力,坚持坚持在坚持!

mysql代码建表

CREATE TABLE `user`(
	user_id INT PRIMARY KEY,
	user_name VARCHAR(20) UNIQUE NOT NULL,
	user_pwd VARBINARY(20) NOT NULL,
	user_borndate DATE,
	user_email VARCHAR(20) NOT NULL,
	user_address VARBINARY(20) NOT NULL
	

)CHARSET=utf8;
INSERT INTO USER VALUES(1,'大白','123','2020-02-02','caom.qf','北京天安门')\
INSERT INTO USER VALUES(2,'小黑','123','2019-01-19','caom.qf','南京')

ALTER TABLE USER MODIFY user_address VARCHAR(20)
SELECT * FROM USER

ORM实体类User

package com.qf.day3.t2;

import java.util.Date;

public class User {
    private int id;
    private String username;
    private String password;
    private Date borndate;
    private String email;
    private String address;

    public User() {
    }

    public User(int id, String username, String password, Date borndate, String email, String address) {
        this.id = id;
        this.username = username;
        this.password = password;
        this.borndate = borndate;
        this.email = email;
        this.address = address;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", borndate=" + borndate +
                ", email='" + email + '\'' +
                ", address='" + address + '\'' +
                '}';
    }

    public void setId(int id) {
        this.id = id;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public void setBorndate(Date borndate) {
        this.borndate = borndate;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public int getId() {
        return id;
    }

    public String getUsername() {
        return username;
    }

    public String getPassword() {
        return password;
    }

    public Date getBorndate() {
        return borndate;
    }

    public String getEmail() {
        return email;
    }

    public String getAddress() {
        return address;
    }
}

DAO(数据访问对象)

package com.qf.day3.t3;

import com.qf.day3.t2.DBUtils;
import com.qf.day3.t2.User;
import com.qf.day3.t4.DateUtiles;

import javax.jws.soap.SOAPBinding;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

/**
 * 对数据库中User表的一系列操作。
 * 只做对数据库访问的操作!\
 * 复用! 对同一张表的操作 实现复用
 */
public class UserDaoImpl {
    private Connection conn = null;
    private PreparedStatement pre = null;
    private ResultSet re = null;

    //增
    public int insert(User user) {
        conn = DBUtils.getConnection();
        String sql = "insert into user(user_id,user_name,user_pwd,user_borndate,user_email,user_address) values (?,?,?,?,?,?)";
        try {
            pre = conn.prepareStatement(sql);
            pre.setInt(1, user.getId());
            pre.setString(2, user.getUsername());
            pre.setString(3, user.getPassword());
            pre.setDate(4, DateUtiles.utilToSql(user.getBorndate()));
            pre.setString(5, user.getEmail());
            pre.setString(6, user.getAddress());
            int i = pre.executeUpdate();
            return i;
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtils.closeAll(conn, pre, re);
        }

        return 0;
    }

    //删
    public int delete(int id) {
        conn = DBUtils.getConnection();
        String sql = "delete from user where user_id = ?";

        try {
            pre = conn.prepareStatement(sql);
            pre.setInt(1, id);
            int i = pre.executeUpdate();
            return i;

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtils.closeAll(conn, pre, re);
        }

        return 0;
    }

    //改
    public int upDate(User user) {
        conn = DBUtils.getConnection();
        String sql = "update user set user_name = ?,user_pwd = ?,user_borndate=?,user_email = ?,user_address=? where user_id =?";
        try {
            pre = conn.prepareStatement(sql);
            pre.setString(1, user.getUsername());
            pre.setString(2, user.getPassword());
            pre.setDate(3, DateUtiles.utilToSql(user.getBorndate()));
            pre.setString(4, user.getEmail());
            pre.setString(5, user.getAddress());
            pre.setInt(6, user.getId());
            int i = pre.executeUpdate();
            return i;

        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtils.closeAll(conn, pre, re);
        }
        return 0;
    }

    //查单个
    public User select(int id) {
        conn = DBUtils.getConnection();
        String sql = "select user_id,user_name,user_pwd,user_borndate,user_email,user_address from user where user_id=?";
        try {
            pre = conn.prepareStatement(sql);
            pre.setInt(1, id);
            re = pre.executeQuery();
            if (re.next()) {//这句不能省(re.next())
                int uid = re.getInt("user_id");
                String name = re.getString("user_name");
                String password = re.getString("user_pwd");
                java.util.Date date = re.getDate("user_borndate");
                String email = re.getString("user_email");
                String address = re.getString("user_address");

                return new User(uid, name, password, date, email, address);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            DBUtils.closeAll(conn, pre, re);
        }
        return null;
    }

    //查所有
    public List<User> selectAll() {
        conn = DBUtils.getConnection();
        List<User> userList = new ArrayList<User>();
        String sql = "select user_id,user_name,user_pwd,user_borndate,user_email,user_address from user ";

        try {
            pre = conn.prepareStatement(sql);
            re = pre.executeQuery();

            while(re.next()){
                int uid = re.getInt(1);
                String name = re.getString(2);
                String pwd = re.getString(3);
                java.util.Date date = re.getDate(4);
                String email = re.getString(5);
                String address = re.getString(6);
                User user = new User(uid,name,pwd,date,email,address);
                userList.add(user);

            }
            return userList;

        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            DBUtils.closeAll(conn,pre,re);
        }


        return null;


    }
}

测试代码

package com.qf.day3.t3;

import com.qf.day3.t2.User;
import com.qf.day3.t4.DateUtiles;

import java.util.List;

public class TestUser {
    public static void main(String[] args) {
        UserDaoImpl udi = new UserDaoImpl();
//        User user = new User(3,"泰罗","123", DateUtiles.strToUtil("2010-10-10"),"qq.com","m78星云");
//        int reslut = udi.insert(user);
//        System.out.println(reslut);

//        System.out.println(udi.select(2));

        List<User> l = udi.selectAll();
        l.forEach(System.out::println);

    }
}

日期从util.Date到sql.Date转换类

package com.qf.day3.t4;

import java.text.ParseException;
import java.text.SimpleDateFormat;

public class DateUtiles {
    private static final SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
    //字符串转java.util.Date
    public static java.util.Date strToUtil(String str){
        try {
           return simpleDateFormat.parse(str);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;

    }
//str转换成sql
    public static java.sql.Date strToSql(String str){

        return utilToSql(strToUtil(str));

    }
    //util转换成sql
    public static java.sql.Date utilToSql(java.util.Date date){

        return new java.sql.Date(date.getTime());
    }


}

注册驱动,获取数据库连接,释放资源,根据配置文件的参数来获取的

package com.qf.day3.t2;

import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

/**
 * 数据库工具类
 * 1、获取连接 connection
 * 2、释放资源
 * 可跨平台方案
 */
public class DBUtils {
    private static final Properties properties = new Properties();

    static {
        try {
            InputStream is = DBUtils.class.getResourceAsStream("/db.properties");
            properties.load(is);//通过流将文件中的内容分割成键值对

            Class.forName(properties.getProperty("driver"));
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }

    }

    public static Connection getConnection(){
        Connection conn = null;

        try {
            conn = DriverManager.getConnection(properties.getProperty("url"),properties.getProperty("username"),properties.getProperty("password"));
        } catch (SQLException e) {
            e.printStackTrace();
        }

        return conn;
    }
    //释放资源
    public static void closeAll(Connection conn, Statement st, ResultSet re){
        try {
            if(conn != null){
                conn.close();
            }
            if(st != null){
                st.close();
            }
            if(re != null){
                re.close();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值