2020年10月8日:
今天学习了Basedao:
BaseDao接口:一般是提供从数据库 增加、删除、修改记录、查询所有记录、查询符合某个条件记录、取得某条记录等方法的底层数据操作自定义类。
由于我们可能操作多个数据库表,这样就需要为每个表提供一个操作他的类 xxDAO, 这些DAO继承BaseDAO 就可以省略很多重复代码,使得整个程序变得更加的简洁和方便。
我写的一个普遍的dao代码:
package Dao;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
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.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
public class basedao{
private QueryRunner query1=new QueryRunner();
public int update(Connection connection,String sql,Object ... args)
{
try{
return query1.update(connection,sql, args);
}catch(SQLException e){
e.printStackTrace();
throw new RuntimeException(e);
}
}
public int[] Batch(Connection connection,String sql,Object[][] params){
try {
return query1.batch(connection, sql, params);
} catch (SQLException e){
e.printStackTrace();
throw new RuntimeException(e);
}
}
public <T> T foreach(Connection connection,Class<T>type,String sql,Object ... args)
{
try {
return query1.query(connection, sql,new BeanHandler<T>(type),args);
} catch (SQLException e)
{
e.printStackTrace();
throw new RuntimeException(e);
}
}
public List<Map<String,Object>> foreachmaplist(Connection connection,String sql,Object ... args)
{
try {
return query1.query(connection, sql,new MapListHandler(),args);
} catch (SQLException e)
{
e.printStackTrace();
throw new RuntimeException(e);
}
}
public Map<String,Object> foreachmap(Connection connection,String sql,Object ... args)
{
try {
return query1.query(connection, sql,new MapHandler(),args);
} catch (SQLException e)
{
e.printStackTrace();
throw new RuntimeException(e);
}
}
public <T> List<T> foreachlist(Connection connection,Class<T>type,String sql,Object ... args)
{
try{
return query1.query(connection, sql,new BeanListHandler<T>(type),args);
} catch (SQLException e)
{
e.printStackTrace();
throw new RuntimeException(e);
}
}
public Object foreachvalue(Connection connection,String sql,Object...args){
try {
return query1.query(connection,sql,new ScalarHandler<Object>(),args);
} catch (SQLException e){
e.printStackTrace();
throw new RuntimeException(e);
}
}
}