操作数据库(Dao) - lonesafe/roubsite GitHub Wiki
使用Dao进行数据库操作需要定义Dao接口和实现类
public interface IUserDao {
public Map getUserInfo(String username);
}
public class UserDao extends EntityDao implements IUserDao {
/**
* 获取用户基本信息
*/
@Override
public Map getUserInfo(String username) {
Map map = this.find("SELECT * FROM RS_USER WHERE USER_NAME = ?",
new String[] { username }, new int[] { Types.VARCHAR });
return map;
}
}
action中采用注解方式实例化Dao接口后,可以直接调用接口中的方法。
@Dao(impl = UserDao.class, dataSource = "dataSource")
IUserDao userDao;
public void doGetUserInfo(){
String userName = this.$_P("userName");
Map userInfo = userDao.getUserInfo(userName);
}
注解中的impl对应的是要使用的Dao的实现类,dataSource对应的是dataSource.properties配置文件中的要调用的数据源,框架会自动发现该注解,并将Dao实例化。
当使用注解的方式无法满足需要或不在action中使用数据库无法注入Dao的情况下,可以使用下面的方法获得数据库连接:
try {
String dataSourceName = "数据源名称";
RSConnection conn = new RSConnection(RSDataSourceHolder.getInstance().get().getDataSource(dataSourceName).getConnection());
IUserDao dao = (IUserDao) new RSDaoFactory().getDao(UserDao.class, dataSourceName, conn);//可以实例化dao,并且执行dao中的方法,也可以直接使用conn执行数据库操作
//写程序逻辑代码
} catch (Exception e) {
} finally {
try {
d.getConn().getConn().close();
} catch (Exception e2) {
}
}
注意:使用该方法必须使用try进行异常捕获,并且需要在finally段中手动关闭数据连接以释放资源。 注意:使用该方法必须使用try进行异常捕获,并且需要在finally段中手动关闭数据连接以释放资源。 注意:使用该方法必须使用try进行异常捕获,并且需要在finally段中手动关闭数据连接以释放资源。 重要的事情说三遍!!!