操作数据库(Dao) - lonesafe/roubsite GitHub Wiki

1、使用Dao进行数据库操作

使用Dao进行数据库操作需要定义Dao接口和实现类

1.1、Dao接口类需要继承“IBaseCURD”

public interface IUserDao {
	public Map getUserInfo(String username);
}

1.2、Dao接口实现类需要继承“EntityDao”并且实现1.1中的接口类

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;
	}
}

1.3、在action中使用Dao

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实例化。

2、手动获取Connection

当使用注解的方式无法满足需要或不在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段中手动关闭数据连接以释放资源。 重要的事情说三遍!!!

⚠️ **GitHub.com Fallback** ⚠️