import javax.sql.DataSource;
import org.nutz.dao.Dao;
import org.nutz.dao.impl.NutDao;
import org.nutz.dao.impl.SimpleDataSource;
public class DaoHelper {
private static SimpleDataSource ds;
private static Dao dao;
private static DataSource getDS() {
if (null == ds) {
ds = new SimpleDataSource();
ds.setJdbcUrl("jdbc:mysql://localhost:3306/AS01");
ds.setUsername("root");
ds.setPassword("");
}
return ds;
}
public static Dao dao() {
if (null == dao) {
dao = new NutDao(getDS());
}
return dao;
}
}
官网的解释:
何为DataSource
先看看JDK中对DataSource的描述:
- 作为 DriverManager 工具的替代项,DataSource 对象是获取连接的首选方法。
- 基本实现 - 生成标准的 Connection 对象
- 连接池实现 - 生成自动参与连接池的 Connection 对象。此实现与中间层连接池管理器一起使用。
简单来说,就是获取数据库连接的一个通用接口, 常见的dbcp,c3p0,druid都是DataSource的实现.
NutDao也选用DataSource作为获取数据库连接的方式, 且只调用其无参数的getConnection()方法, 也是大部分数据库连接池唯一支持的方法.
提醒一下, DataSource只是接口,不等于连接池
NutDao不挑剔任何连接池/DataSource实现,只要实现了DataSource接口就行,不存在是否支持"XXXX连接池"的问题
public Account regAccount(Account account) {
if (null != account) {
if (StringUtil.isNotEmpty(account.getUsername()) && StringUtil.isNotEmpty(account.getPassword())) {
account.setPassword(new MD5().getMD5ofStr(account.getPassword()));
return DaoHelper.dao().insert(account);
}
}
return null;
}
public List<Account> queryAccount() throws ClassNotFoundException, SQLException {
return DaoHelper.dao().query(Account.class, null);
}
public Account getByUsernameAndPassword(String username, String password) {
String pwd = new MD5().getMD5ofStr(password);
return DaoHelper.dao().fetch(Account.class,Cnd.where("username","=",username).and("password","=",pwd));
}
- 插入 Insert
- 删除 Delete
- 更新 Update
- 查询 Query
可以说,这四种操作涵盖了所有的数据操作。并且,除了 插入 操作,所有的操作都是可以一次针对多条记录的。
但是,Nutz.Dao 认为从使用者的角度来看,这四种操作还是有所不同的。比如,查询返回的结果,很多时候仅仅是一条记录。 我们需要为这种情况进行优化。所以,Nutz.Dao 在传统关系型数据库数据操作的基础上定义了如下的数据操作:
插入 | Insert | 一条 SQL 插入一条记录或者多条记录 |
插入 | FastInsert | 一条 SQL ,通过batch插入多条记录 |
删除 | Delete | 一条 SQL 删除一条记录 |
更新 | Update | 一条 SQL 更新一条或者多条记录 |
获取 | Fetch | 一条 SQL 获取一条记录 |
查询 | Query | 一条 SQL 根据条件获取多条记录 |
清除 | Clear | 一条 SQL 根据条件删除多条记录 |
建表 | Create | 根据实体建表 |
删表 | Drop | 根据实体/表名称进行删表 |
聚合 | Func | 执行sum,count等操作 |