DAO属于J2EE数据层的操作,即DAO封装了数据库表在一个项目中的所有操作(增删查改)
代码如下:
一://写实体类Person
public class Person {
private String id ;
private String name ;
private String password ;
private int age ;
private String email ;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
二.//定义有关Person表的有关操作的抽象方法
public interface PersonDAO {
// 增加操作
public void insert(Person person) throws Exception;
// 修改操作
public void update(Person person) throws Exception;
// 删除操作
public void delete(String id) throws Exception;
// 按ID查询操作
public Person queryById(String id) throws Exception;
// 查询全部
public List queryAll() throws Exception;
// 模糊查询
public List queryByLike(String cond) throws Exception;
}
三 //定义类实现personDAO
public class PersonDAOImpl implements PersonDAO {
public void insert(Person person) throws Exception {
String sql = "insert into person (id,name,password,age,email) values(?,?,?,?,?)";
PreparedStatement pstmt = null;
DataBaseConnection dbc = null;
try {
dbc = new DataBaseConnection();
pstmt = dbc.getConnection().prepareStatement(sql);
pstmt.setString(1, person.getId());
pstmt.setString(2, person.getName());
pstmt.setString(3, person.getPassword());
pstmt.setInt(4, person.getAge());
pstmt.setString(5, person.getEmail());
pstmt.executeUpdate();
pstmt.close();
} catch (Exception e) {
throw new Exception("操作出现异常");
} finally {
dbc.close();
}
}
// 修改操作
public void update(Person person) throws Exception {
String sql = "UPDATE person SET name=?,password=?,age=?,email=? WHERE id=?";
PreparedStatement pstmt = null;
DataBaseConnection dbc = null;
try {
dbc = new DataBaseConnection();
pstmt = dbc.getConnection().prepareStatement(sql);
pstmt.setString(1, person.getName());
pstmt.setString(2, person.getPassword());
pstmt.setInt(3, person.getAge());
pstmt.setString(4, person.getEmail());
pstmt.setString(5, person.getId());
pstmt.executeUpdate();
pstmt.close();
} catch (Exception e) {
throw new Exception("操作出现异常");
} finally {
dbc.close();
}
}
// 删除操作
public void delete(String id) throws Exception {
String sql = "DELETE FROM person WHERE id=?";
PreparedStatement pstmt = null;
DataBaseConnection dbc = null;
try {
dbc = new DataBaseConnection();
pstmt = dbc.getConnection().prepareStatement(sql);
pstmt.setString(1, id);
pstmt.executeUpdate();
pstmt.close();
} catch (Exception e) {
throw new Exception("操作出现异常");
} finally {
dbc.close();
}
}
// 按ID查询操作
public Person queryById(String id) throws Exception {
Person person = null;
String sql = "SELECT id,name,password,age,email FROM person WHERE id=?";
PreparedStatement pstmt = null;
DataBaseConnection dbc = null;
try {
dbc = new DataBaseConnection();
pstmt = dbc.getConnection().prepareStatement(sql);
pstmt.setString(1, id);
ResultSet rs = pstmt.executeQuery();
if (rs.next()) {
person = new Person();
person.setId(rs.getString(1));
person.setName(rs.getString(2));
person.setPassword(rs.getString(3));
person.setAge(rs.getInt(4));
person.setEmail(rs.getString(5));
}
rs.close();
pstmt.close();
} catch (Exception e) {
throw new Exception("操作出现异常");
} finally {
dbc.close();
}
return person;
}
// 查询全部
public List queryAll() throws Exception {
List all = new ArrayList();
String sql = "SELECT id,name,password,age,email FROM person";
PreparedStatement pstmt = null;
DataBaseConnection dbc = null;
try {
dbc = new DataBaseConnection();
pstmt = dbc.getConnection().prepareStatement(sql);
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
Person person = new Person();
person.setId(rs.getString(1));
person.setName(rs.getString(2));
person.setPassword(rs.getString(3));
person.setAge(rs.getInt(4));
person.setEmail(rs.getString(5));
all.add(person);
}
rs.close();
pstmt.close();
} catch (Exception e) {
throw new Exception("操作出现异常");
} finally {
dbc.close();
}
return all;
}
// 模糊查询
public List queryByLike(String cond) throws Exception {
List all = new ArrayList();
String sql = "SELECT id,name,password,age,email FROM person " +
"WHERE name LIKE ? or email LIKE ?";
PreparedStatement pstmt = null;
DataBaseConnection dbc = null;
try {
dbc = new DataBaseConnection();
pstmt = dbc.getConnection().prepareStatement(sql);
pstmt.setString(1, "%" + cond + "%");
pstmt.setString(2, "%" + cond + "%");
ResultSet rs = pstmt.executeQuery();
while (rs.next()) {
Person person = new Person();
person.setId(rs.getString(1));
person.setName(rs.getString(2));
person.setPassword(rs.getString(3));
person.setAge(rs.getInt(4));
person.setEmail(rs.getString(5));
all.add(person);
}
rs.close();
pstmt.close();
} catch (Exception e) {
throw new Exception("操作出现异常");
} finally {
dbc.close();
}
return all;
}
}
四// 定义一个类DAOFactory (数据库工厂)
public class DAOFactory {
public static PersonDAO getPersonDAOInstance() {
return new PersonDAOImpl();
}
}
五 //数据库连接类
//好处:方便管理数据库连接
public class DataBaseConnection {
private final String DBDRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";//装载并注册数据库的JDBC驱动程序
private final String DBURL = "jdbc:sqlserver://pgm:1433;DatabaseName=pgm";//建立与数据库的连接
private final String DBUSER = "sa";//用户名
private final String DBPASSWORD = "";//密码
private Connection conn = null;
public DataBaseConnection() {
try {
Class.forName(DBDRIVER);
this.conn = DriverManager.getConnection(DBURL, DBUSER, DBPASSWORD);
} catch (Exception e) {
}
}
// 取得数据库连接
public Connection getConnection() {
return this.conn;
}
// 关闭数据库连接
public void close() {
try {
this.conn.close();
} catch (Exception e) {
}
}
}
六:测试类!!!!
1 插入
public class TestInsert {
public static void main(String args[ ])
{
new TestInsert();
}
public TestInsert()
{
Person person=new Person(); //实例化数据bean
person.setId("Zs");
person.setName("张三");
person.setPassword("zzzzzz");
person.setAge(30);
person.setEmail("zs@126.com");
//通过工厂得到personDAO对象
PersonDAO dao=DAOFactory.getPersonDAOInstance();
try
{
dao.insert(person); //插入操作,把数据bean传入
System.out.println("插入成功");
}catch(Exception e){
System.out.println("插入失败");
e.printStackTrace();
}
}
}
2 更新
public class TestUpdate {
public static void main(String args[ ])
{
new TestUpdate();
}
public TestUpdate()
{
Person person=new Person(); //实例化数据bean
person.setId("ZS");
person.setName("张三");
person.setPassword("yyyyyy");
person.setAge(30);
person.setEmail("zs@126.com");
//通过工厂得到personDAO对象
PersonDAO dao=DAOFactory.getPersonDAOInstance();
try
{
dao.update(person); //更新操作,把数据bean传入
System.out.println("更新成功");
}catch(Exception e){
System.out.println("更新失败");
e.printStackTrace();
}
}
}
3 按ID查找
public class TestIdSelect {
public static void main(String[] args) {
new TestIdSelect();
}
public TestIdSelect() {
PersonDAO dao=DAOFactory.getPersonDAOInstance();
try{
Person person=dao.queryById("ZS");
System.out.println(person.getName());
System.out.println(person.getPassword());
System.out.println(person.getAge());
System.out.println(person.getEmail());
}catch(Exception e){
System.out.println("查询失败");
e.printStackTrace();
}
}
}
4 查找全部信息
public class TestAllSelect {
public static void main(String[] args) {
new TestAllSelect();
}
public TestAllSelect() {
PersonDAO dao = DAOFactory.getPersonDAOInstance();
try {
List list = dao.queryAll();
Iterator iter = list.iterator();
while (iter.hasNext()) {
Person person = (Person) iter.next();
System.out.print(person.getId() + " ");
System.out.print(person.getName() + " ");
System.out.print(person.getPassword() + " ");
System.out.print(person.getAge() + " ");
System.out.print(person.getEmail() + " ");
System.out.println();
}
} catch (Exception e) {
System.out.println("查询失败");
e.printStackTrace();
}
}
}