package com.lavasoft.dbstu;
import com.lavasoft.common.DBToolkit;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.MapHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
/**
* Created by IntelliJ IDEA.
*
* @author leizhimin 2010-1-25 21:00:29
*/
public
class PersonDAOImpl
implements PersonDAO {
private
static PersonDAOImpl instance =
new PersonDAOImpl();
public
static PersonDAOImpl getInstance() {
return instance;
}
public
static
void main(String[] args) {
//錯誤
int a1 = (Integer)
null;
boolean x1 = (Boolean)
null;
//正確
Integer a2 = (Integer)
null;
Boolean x2 = (Boolean)
null;
getInstance().save(
null);
// getInstance().save(null);
// getInstance().save(null);
// getInstance().save(null);
// getInstance().save(null);
getInstance().update(
null);
getInstance().load(
null);
getInstance().load4Map(
null);
}
@Override
public Long save(String sql) {
Long id =
null;
String ins_sql =
"INSERT INTO person (NAME, age, address) VALUES ('aaa', 21, 'address001')";
Connection conn = DBToolkit.getConnection();
QueryRunner qr =
new QueryRunner();
try {
qr.update(conn, ins_sql);
//獲取新增記錄的自增主鍵
id = (Long) qr.query(conn,
"SELECT LAST_INSERT_ID()",
new ScalarHandler(1));
}
catch (SQLException e) {
e.printStackTrace();
}
finally {
DBToolkit.closeConnection(conn);
}
return id;
}
@Override
public
int delete(Long id) {
int x = 0;
Connection conn = DBToolkit.getConnection();
QueryRunner qr =
new QueryRunner();
try {
x = qr.update(conn,
"DELETE FROM person WHERE id = ?", id);
}
catch (SQLException e) {
e.printStackTrace();
}
finally {
DBToolkit.closeConnection(conn);
}
return x;
}
@Override
public
int update(Person person) {
int x = 0;
Connection conn = DBToolkit.getConnection();
QueryRunner qr =
new QueryRunner();
try {
x = qr.update(conn,
"UPDATE person SET NAME = ?, age = ?, address = ? WHERE id = ?",
"xxx", 23,
"ttt", 5);
}
catch (SQLException e) {
e.printStackTrace();
}
finally {
DBToolkit.closeConnection(conn);
}
return x;
}
@Override
public Person load(Long id) {
Connection conn = DBToolkit.getConnection();
QueryRunner qr =
new QueryRunner();
try {
Person person = (Person) qr.query(conn,
"SELECT * FROM person where id = ?",
new BeanHandler(Person.
class), 3L);
System.out.println(person.getId() +
"\t" + person.getSdf() +
"\t" + person.getAge() +
"\t" + person.getAddress());
}
catch (SQLException e) {
e.printStackTrace();
}
return
null;
}
@Override
public List<Person> findPerson(String sql) {
Connection conn = DBToolkit.getConnection();
QueryRunner qr =
new QueryRunner();
try {
List<Person> pset = (List) qr.query(conn,
"SELECT * FROM person",
new BeanListHandler(Person.
class));
for (Person person : pset) {
System.out.println(person.getId() +
"\t" + person.getSdf() +
"\t" + person.getAge() +
"\t" + person.getAddress());
}
}
catch (SQLException e) {
e.printStackTrace();
}
return
null;
}
public Person load4Map(Long id) {
Connection conn = DBToolkit.getConnection();
QueryRunner qr =
new QueryRunner();
try {
//先將兩個字段置爲null
qr.update(conn,
"update person set age = null,address =null where id =1");
Map<String, Object> map = qr.query(conn,
"SELECT * FROM person where id = ?",
new MapHandler(), 1L);
Person person =
new Person();
person.setId((Long) map.get(
"id"));
person.setSdf((String) map.get(
"name"));
person.setAge((Integer) map.get(
"age"));
person.setAddress((String) map.get(
"address"));
System.out.println(person.getId() +
"\t" + person.getSdf() +
"\t" + person.getAge() +
"\t" + person.getAddress());
}
catch (SQLException e) {
e.printStackTrace();
}
return
null;
}
}