Hibernate ORM框架——续第一章:Java增删改查与Hibernate的增删改查的对比

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hibernate ORM框架——续第一章:Java增删改查与Hibernate的增删改查的对比相关的知识,希望对你有一定的参考价值。

一、

1)项目结构

技术分享

 

2)SQL server 2008数据库的编写

create database Emp
use Emp

create table emp
(
    eno varchar(10),
    ename varchar(50),
    salary float
)

insert into emp values(‘1‘,‘zss1‘,2000);
insert into emp values(‘2‘,‘zss2‘,2000);

update emp set ename=‘sss‘,salary=2200 where eno=‘1‘;


delete emp where eno=‘1‘


select * from emp;

 

二、代码

1)DBUtil

package com.emp.util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 * 1)获取连接对象 2)关闭对象,释放资源
 * 
 * @author Administrator
 * 
 */
public class DBUtil {

    private static final String url = "jdbc:sqlserver://localhost:1433;databaseName=emp";
    private static final String user = "sa";
    private static final String pass = "";
    private static Connection conn;

    // 1)获取连接对象
    public static Connection getConnection() {
        // 第一:加载驱动程序
        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

            // 第二:通过驱动程序获取连接对象
            conn = DriverManager.getConnection(url, user, pass);

        } catch (ClassNotFoundException e) {
            System.out.println("加载驱动程序失败!");
            e.printStackTrace();
        } catch (SQLException e) {
            System.out.println("获取连接对象失败!");
            e.printStackTrace();
        }

        // 第三:返回
        return conn;
    }

    // 2)关闭对象,释放资源
    public static void close(Connection conn, Statement stmt,ResultSet rst) {
        if(rst!=null) {
            try {
                rst.close() ;
            } catch (SQLException e) {
                System.out.println("关闭结果集对象失败!");
                e.printStackTrace();
            }
        }
        
        
        if (stmt != null) {
            try {
                stmt.close();
            } catch (SQLException e) {
                System.out.println("关闭语句对象失败!");
                e.printStackTrace();
            }
        }

        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                System.out.println("关闭连接对象失败");
                e.printStackTrace();
            }
        }

    }

}

 

2)实体对象

package com.emp.entity;

public class Emp {
    private String eno;
    private String ename;
    private Double salary;
    
    public String getEno() {
        return eno;
    }
    public void setEno(String eno) {
        this.eno = eno;
    }
    public String getEname() {
        return ename;
    }
    public void setEname(String ename) {
        this.ename = ename;
    }
    public Double getSalary() {
        return salary;
    }
    public void setSalary(Double salary) {
        this.salary = salary;
    }
}

 

3)dao接口

 

package com.emp.dao;

import java.util.List;

import com.emp.entity.Emp;

public interface EmpDao {
    
    /*添加*/
    public abstract int add(Emp emp);
    
    /*修改*/
    public abstract int udate(Emp emp);
    
    /*查询*/
    public abstract List<Emp> queryAll();
    
    /*删除*/
    public abstract int delete(String eno);
}

 

4)dao接口实现

package com.emp.dao.impl;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.emp.dao.EmpDao;
import com.emp.entity.Emp;
import com.emp.util.DBUtil;

public class EmpDaoImpl implements EmpDao{

    /*添加*/
    @Override
    public int add(Emp emp) {
        int r = 0;

        Connection conn = DBUtil.getConnection();

        String sql = "insert into emp values(?,?,?);";

        PreparedStatement psmts = null;

        try {
            psmts = conn.prepareStatement(sql);

            psmts.setString(1, emp.getEno());
            psmts.setString(2, emp.getEname());
            psmts.setDouble(3, emp.getSalary());

            r = psmts.executeUpdate();

        } catch (SQLException e) {
            System.out.println("预编译出错!");
            e.printStackTrace();
        } finally {
            DBUtil.close(conn, psmts, null);
        }
        return r;
    }

    /*修改*/
    @Override
    public int udate(Emp emp) {
        int r = 0;
        // 第一:获取连接对象
        Connection conn = DBUtil.getConnection();

        // 第二:定义操作数据库的SQL语句
        String sql = "update emp set ename=?,salary=? where eno=?;";

        // 第三:获取语句对象
        PreparedStatement pstmt = null;

        try {
            pstmt = conn.prepareStatement(sql);

            // 第四:设置数据
            pstmt.setString(1, emp.getEname());
            pstmt.setDouble(2, emp.getSalary());
            pstmt.setString(3, emp.getEno());

            // 第五:执行SQL语句
            r = pstmt.executeUpdate();

        } catch (SQLException e) {
            System.out.println("预编译失败!");
            e.printStackTrace();
        } finally {
            // 第六:关闭对象
            DBUtil.close(conn, pstmt, null);
        }

        return r;
    }

    /*查询全部*/
    @Override
    public List<Emp> queryAll() {
        List<Emp> list = new ArrayList<Emp>();
        String sql="select * from emp;";
        
        Connection conn = DBUtil.getConnection();
        
        PreparedStatement psmts = null;
        ResultSet rst = null;
        try {
            psmts = conn.prepareStatement(sql);
            rst = psmts.executeQuery();
            
            while(rst.next()){
                Emp emp = new Emp();
                emp.setEno(rst.getString(1));
                emp.setEname(rst.getString(2));
                emp.setSalary(rst.getDouble(3));
                
                list.add(emp);
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            DBUtil.close(conn, psmts, rst);
            
        }
        
        return list;
    }

    /*删除*/
    @Override
    public int delete(String eno) {
        int r = 0;
        // 第一:获取连接对象
        Connection conn = DBUtil.getConnection();

        // 第二:定义操作数据库的SQL语句
        String sql = "delete from emp where eno=?";

        // 第三:获取语句对象
        PreparedStatement pstmt = null;

        try {
            pstmt = conn.prepareStatement(sql);

            // 第四:设置数据
            pstmt.setString(1, eno);

            // 第五:执行SQL语句
            r = pstmt.executeUpdate();

        } catch (SQLException e) {
            System.out.println("预编译失败!");
            e.printStackTrace();
        } finally {
            // 第六:关闭对象
            DBUtil.close(conn, pstmt, null);
        }

        return r;
    }

    
}

 

 5)test测试

package com.emp.test;

import java.util.List;

import com.emp.dao.EmpDao;
import com.emp.dao.impl.EmpDaoImpl;
import com.emp.entity.Emp;

public class Main {

    public static void main(String[] args) {
        /*查询所有*/
        query();
        
        /*添加*/
        //add();
        
        /*修改*/
        //update();
        
        /*删除*/
        /*delete();*/
        
    }

    /*查询所有*/
    public static void query(){
        
        System.out.println("查询所有的数据:");
        EmpDao edao = new EmpDaoImpl();
        List<Emp> list = edao.queryAll();
        for (Emp e : list) {
            System.out.println(e.getEno()+","+e.getEname()+","+e.getSalary());
        }
        System.out.println("——————————————————————————————————————————");
    
    }
    

    /*添加*/
    public static void add() {
        
        Emp emp = new Emp();
        emp.setEno("5");
        emp.setEname("lby");
        emp.setSalary((double) 80000);
        
        EmpDao edao = new EmpDaoImpl();
        int r = edao.add(emp);

        if(r==1){
            System.out.println("添加"+emp.getEno()+","+emp.getEname()+","+emp.getSalary()+"数据成功!");
            System.out.println("——————————————————————————————————————————");
            query();
        } else {
            System.out.println("对不起,添加失败!");
        }
    }
    
    
    /*修改*/
    public static void update() {
        Emp emp = new Emp();
        emp.setEno("3");
        emp.setEname("zzlalazzz");
        emp.setSalary((double) 1062);
        
        EmpDao edao = new EmpDaoImpl();
        int r = edao.udate(emp);
        
        if(r==1){
            System.out.println("数据修改成功!");
            System.out.println("编号为:"+emp.getEno()+",修改后的数据为:"+emp.getEno()+","+emp.getEname()+","+emp.getSalary());
            System.out.println("——————————————————————————————————————————");
            query();
        } else {
            System.out.println("对不起,修改失败!");
        }
    }
    
    
    /*删除*/
    public static void delete() {
        EmpDao edao = new EmpDaoImpl();
        int r = edao.delete("5");
        
        if(r>0){//原因没有给编号设置成主键:可有多个
            System.out.println("数据删除成功!");
            System.out.println("——————————————————————————————————————————");
            query();
        } else {
            System.out.println("对不起,删除失败!");
        }
    }
    
}

 

/*以上个人整理笔记,如果有误或者有不懂的地方,欢迎评论与指出*/

 

以上是关于Hibernate ORM框架——续第一章:Java增删改查与Hibernate的增删改查的对比的主要内容,如果未能解决你的问题,请参考以下文章

Hibernate ORM框架——第一章:Hibernate简介与操作基础

hibernate-第一章-基础

MyBatis第一章

Hibernate入门

SSH框架第一天——hibernate框架

hibernate