注释:
PrimaryKey:
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface PrimaryKey {}
NoneField:
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface NoneField {}
反射:上篇文章 +单一模式
C3P0连接数据池:
public class C3P0Action
{
private static ComboPooledDataSource dataSource;
private static Connection con =null;
static
{
//获取c3p0的数据源对象,这个数据源对象提供的是连接对象。
dataSource =new ComboPooledDataSource();
}
//产生一个副本,连接对象的一个副本 作用跟锁相似
private static ThreadLocal<Connection> local =new ThreadLocal<Connection>();
public static Connection getConnection() throws SQLException//连接Connection
{
con = local.get();
if(con==null)
{
con=dataSource.getConnection();
local.set(con);
}
return con;
}
public static void colseConnection() throws SQLException//关闭连接
{
con=local.get();
if(con!=null)
{
con.close();
local.remove();
}
}
//对当前连接开启事务操作(也就是对数据的增,删,改操作必须通过事务提交才会有效)
public static void startTransaction() throws SQLException
{
con = local.get();
if(con == null)
{
con = dataSource.getConnection();
local.set(con);
}
con.setAutoCommit(false);//开启事务,
}
/**
* 对当前的连接对象的事务提交
* @throws SQLException
*/
public static void commitTransaction() throws SQLException
{
con = local.get();
if(con == null)
{
con = dataSource.getConnection();
local.set(con);
}
con.commit();//事务提交
}
}
dao层:以user为例:(dbutils技术)
public UserInfo Insert(UserInfo user) throws SQLException, IllegalArgumentException, IllegalAccessException //插入
{
String sql = fs.FSInsert(user);
Connection con =C3P0Action.getConnection();
UserInfo users = queryRunner.query(con,sql,new BeanHandler<UserInfo>(UserInfo.class));
C3P0Action.colseConnection();
return users;
}
public List<UserInfo> SelectList(UserInfo t) throws IllegalArgumentException, IllegalAccessException, SQLException
{
String sql =fs.FSSelect(t);
Connection con =C3P0Action.getConnection();
System.out.println(sql);
List<UserInfo> userList =queryRunner.query(con,sql,new BeanListHandler<UserInfo>(UserInfo.class));
return userList;
}
@Override
public int Update(UserInfo t) throws IllegalArgumentException, IllegalAccessException, SQLException
{
/* String sql = fs.FSUpdate(t);
Connection con =C3P0Action.getConnection();
int i =queryRunner.query(con, sql,new BeanHandler<UserInfo>(UserInfo.class));
return i;*/
return 0;
}
@Override
public int Delete(Object o) {
// TODO Auto-generated method stub
return 0;
}
@Override
public UserInfo getModel(Object o) throws IllegalArgumentException, IllegalAccessException, SQLException
{
UserInfo user =new UserInfo();
user.setUserid((Integer)o);
String sql =fs.FSSelect(user);
Connection con = C3P0Action.getConnection();
UserInfo u = queryRunner.query(con,sql,new BeanHandler<UserInfo>(UserInfo.class));
return u;
}