nutz

来源:互联网 发布:数学英文词典软件 编辑:程序博客网 时间:2024/04/30 07:44
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));}

  1. 插入 Insert
  2. 删除 Delete
  3. 更新 Update
  4. 查询 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等操作

原创粉丝点击