我的笔记-JDBC+Oracle访问数据库

本人的java笔记,仅为方便自己参考。

实体:Person

private int id;
	private String name;
	private String mobile;
	private String telphone;
	private String email;
	private String city;
	private Date birthday;

工具类:封装的JDBCUtil

public class JDBCUtil {
    private static Properties pro = new Properties();
    //创建ThreadLocal
    private static final ThreadLocal<Connection> tl = new ThreadLocal<Connection>();

    static{
        InputStream is = JDBCUtil.class.getResourceAsStream("/com/lau/conf/jdbc.properties");
        try {
            System.out.println("这是:"+is);
            pro.load(is);
            Class.forName(pro.getProperty("jdbc.driver"));
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            try {
                if(is!=null){
                    is.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    public static Connection getConn(){
        Connection conn = tl.get();//从ThreadLocal中获得Connection
        if(conn==null){//第一次调用
            try {
                conn = DriverManager.getConnection(pro.getProperty("jdbc.url"), pro.getProperty("jdbc.username"), pro.getProperty("jdbc.password"));
                tl.set(conn);
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return conn;
    }


    public static void getClose(Connection conn,Statement stmt,ResultSet rs){
        if(rs!=null){
            try {
                rs.close();

            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        if(stmt!=null){
            try {
                stmt.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        if(conn!=null){
            try {
                conn.close();
                tl.remove();//*******************一定要移除
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    }
}

dao:接口

public interface PersonDAO {
    //	插入数据
    void insertPerson(Person p);
    //	修改数据
    void updatePerson(Person p);
    //	删除
    void deletePerson(int id);
    //	查询全部
    List<Person> selectAll();
    //	根据名字查询
    List<Person> selectByName(String s);
    //	根据电话查询
    List<Person> selectByMobile(String s);
    //	根据id查询
    Person selectById(int id);
}

dao实现

public class PersonDAO implements IPersonDAO{

	@Override
	public void insertPerson(Person p) {
		// TODO Auto-generated method stub
		Connection conn=null;
		PreparedStatement ps=null;
		try{
//			1、创建连接
			conn=JDBCUtil.getConn();
//			2、书写带?的sql语句,创建PreparedStatement
			String sql="insert into t_person(id,name,mobile,telphone,email,city,birthday)" +
					"values (person_seq.nextval,?,?,?,?,?,?)";
			ps = conn.prepareStatement(sql);
//			3、给?赋值
			ps.setString(1, p.getName());
			ps.setString(2, p.getMobile());
			ps.setString(3, p.getTelphone());
			ps.setString(4, p.getEmail());
			ps.setString(5, p.getCity());
			ps.setDate(6, new java.sql.Date(p.getBirthday().getTime()));
			ps.executeUpdate();
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			JDBCUtil.getClose(null, ps, null);
		}
	}

	@Override
	public void updatePerson(Person p) {
		Connection conn=null;
		PreparedStatement ps=null;
		try{
//			1、创建连接
			conn=JDBCUtil.getConn();
//			2、书写带?的sql语句,创建PreparedStatement
			ps=conn.prepareStatement("update t_person set city=? where id=?");
			ps.setString(1, p.getCity());
			ps.setInt(2, p.getId());
			ps.executeUpdate();
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			JDBCUtil.getClose(null, ps, null);
		}
		
	}

	@Override
	public void deletePerson(int id) {
		// TODO Auto-generated method stub
		Connection conn=null;
		PreparedStatement ps=null;
		try{
			conn=JDBCUtil.getConn();
			ps=conn.prepareStatement("delete from t_person where id = ?");
			ps.setInt(1, id);
			ps.executeUpdate();
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			JDBCUtil.getClose(null, ps, null);
		}
		
	}

	@Override
	public List<Person> selectAll() {
		// TODO Auto-generated method stub
		Connection conn=null;
		PreparedStatement ps=null;
		ResultSet rs=null;
		Person p=null;
		List<Person> list=new ArrayList<Person>();
		try{
			conn=JDBCUtil.getConn();
			String sql="select id,name,mobile,telphone,email,city,birthday from t_person";
			ps=conn.prepareStatement(sql);
			rs=ps.executeQuery();
			while (rs.next()){
				p=new Person();
				p.setId(rs.getInt(1));
				p.setName(rs.getString(2));
				p.setMobile(rs.getString(3));
				p.setTelphone(rs.getString(4));
				p.setEmail(rs.getString(5));
				p.setCity(rs.getString(6));
				p.setBirthday(rs.getDate(7));
				list.add(p);
			}
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			
		}
		return list;
	}

	@Override
	public List<Person> selectByName(String s) {
		// TODO Auto-generated method stub
		Connection conn=null;
		PreparedStatement ps=null;
		ResultSet rs=null;
		Person p=null;
		List<Person> list=new ArrayList<Person>();
		try{
			conn=JDBCUtil.getConn();
			String sql="select id,name,mobile,telphone,email,city,birthday from t_person where name like ?";
			ps=conn.prepareStatement(sql);
			ps.setString(1, "%"+s+"%");
			rs=ps.executeQuery();
			while (rs.next()){
				p=new Person();
				p.setId(rs.getInt(1));
				p.setName(rs.getString(2));
				p.setMobile(rs.getString(3));
				p.setTelphone(rs.getString(4));
				p.setEmail(rs.getString(5));
				p.setCity(rs.getString(6));
				p.setBirthday(rs.getDate(7));
				list.add(p);
			}
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			
		}
		return list;
	}

	@Override
	public List<Person> selectByMobile(String s) {
		// TODO Auto-generated method stub
		Connection conn=null;
		PreparedStatement ps=null;
		ResultSet rs=null;
		Person p=null;
		List<Person> list=new ArrayList<Person>();
		try{
			conn=JDBCUtil.getConn();
			String sql="select id,name,mobile,telphone,email,city,birthday from t_person where mobile like ?";
			ps=conn.prepareStatement(sql);
			ps.setString(1, "%"+s+"%");
			rs=ps.executeQuery();
			while (rs.next()){
				p=new Person();
				p.setId(rs.getInt(1));
				p.setName(rs.getString(2));
				p.setMobile(rs.getString(3));
				p.setTelphone(rs.getString(4));
				p.setEmail(rs.getString(5));
				p.setCity(rs.getString(6));
				p.setBirthday(rs.getDate(7));
				list.add(p);
			}
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			
		}
		return list;
	}

	@Override
	public Person selectById(int id) {
		// TODO Auto-generated method stub
		Connection conn=null;
		PreparedStatement ps=null;
		ResultSet rs=null;
		Person p=null;
		try{
			conn=JDBCUtil.getConn();
			ps=conn.prepareStatement("select id,name,mobile,telphone,email,city,birthday from t_person where id=?");
			ps.setInt(1, id);
			rs=ps.executeQuery();
			if(rs.next()){
				p=new Person();
				p.setId(rs.getInt(1));
				p.setName(rs.getString(2));
				p.setMobile(rs.getString(3));
				p.setTelphone(rs.getString(4));
				p.setEmail(rs.getString(5));
				p.setCity(rs.getString(6));
				p.setBirthday(rs.getDate(7));
			}
		}catch(Exception e){
			e.printStackTrace();
		}finally{
			JDBCUtil.getClose(conn, ps, rs);
		}
		return p;
	}
}

service接口

public interface TelbookService {
	//添加联系人需要使用的业务方法
    public void regist(Person person) ;
    
  	//修改联系人时需要调用的业务方法
  	public void changePersonMessage(Person person);
    
	//通过Id查找联系人
	public Person getOnePerson(Integer id) ;
	
    //获得所有的联系人的业务方法
    public List<Person> getAllPersons() ;
    
    //根据联系人姓名查找联系人的业务方法
    public List<Person> getPersonByName(String name);
    
    //根据手机号码查询相关的联系人的业务方法
    public List<Person> getPersonByMobile(String mobile);
    
    //删除联系人时需要调用的业务方法
    public void dropPerson(Integer id);
}

service实现:

package com.baizhi.laulicy.service;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

import com.baizhi.laulicy.dao.IPersonDAO;
import com.baizhi.laulicy.dao.PersonDAO;
import com.baizhi.laulicy.entity.Person;
import com.baizhi.laulicy.util.JDBCUtil;

public class TelbookServiceImpl implements TelbookService{

	@Override
	public void regist(Person person) {
		// TODO Auto-generated method stub
		Connection conn=null;
		try{
//			1、使用工具类创建连接
			conn=JDBCUtil.getConn();
//			2、修改事务的默认行为
			conn.setAutoCommit(false);
//			3、调用DAO方法完成业务功能
			IPersonDAO ip=new PersonDAO();
			ip.insertPerson(person);
//			4、事务提交或回滚
			conn.commit();
		}catch(Exception e){
			e.printStackTrace();
			try {
				conn.rollback();
			} catch (SQLException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
		}finally{
			JDBCUtil.getClose(conn, null, null);
		}
	}

	@Override
	public void changePersonMessage(Person person) {
		// TODO Auto-generated method stub
		Connection conn=null;
		try{
//			1、使用工具类创建连接
			conn=JDBCUtil.getConn();
//			2、修改事务的默认行为
			conn.setAutoCommit(false);
//			3、调用DAO方法完成业务功能
			IPersonDAO ip=new PersonDAO();
			ip.updatePerson(person);
//			4、事务提交或回滚
			conn.commit();
		}catch(Exception e){
			e.printStackTrace();
			try {
				conn.rollback();
			} catch (SQLException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
		}finally{
			JDBCUtil.getClose(conn, null, null);
		}
	}

	@Override
	public Person getOnePerson(Integer id) {
		// TODO Auto-generated method stub
		IPersonDAO ip=new PersonDAO();
		return ip.selectById(id);
	}

	@Override
	public List<Person> getAllPersons() {
		// TODO Auto-generated method stub
		IPersonDAO ip=new PersonDAO();
		List<Person> list=ip.selectAll();
		return list;
	}

	@Override
	public List<Person> getPersonByName(String name) {
		// TODO Auto-generated method stub
		IPersonDAO ip=new PersonDAO();
		List<Person> list=ip.selectByName(name);
		return list;
	}

	@Override
	public List<Person> getPersonByMobile(String mobile) {
		// TODO Auto-generated method stub
		IPersonDAO ip=new PersonDAO();
		List<Person> list=ip.selectByMobile(mobile);
		return list;
	}

	@Override
	public void dropPerson(Integer id) {
		// TODO Auto-generated method stub
		Connection conn=null;
		try{
			conn=JDBCUtil.getConn();
			conn.setAutoCommit(false);
			IPersonDAO ip=new PersonDAO();
			ip.deletePerson(id);
			conn.commit();
		}catch(Exception e){
			e.printStackTrace();
			try {
				conn.rollback();
			} catch (SQLException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
		}finally{
			JDBCUtil.getClose(conn, null, null);
		}
	}

}

测试:

@Test
    public void test2(){
        PersonDAO dao = new PersonDAOImpl();
        List<Person> list = dao.selectAll();
        System.out.println(list);
    }
}

猜你喜欢

转载自blog.csdn.net/laulicy/article/details/79811164