Search in sources :

Example 6 with Record

use of org.nutz.dao.entity.Record in project nutz by nutzam.

the class SimpleDaoTest method test_simple_fetch_record.

@Test
public void test_simple_fetch_record() {
    Pet pet = Pet.create("abc");
    long now = System.currentTimeMillis();
    pet.setBirthday(Castors.me().castTo(now / 1000 * 1000, Timestamp.class));
    dao.insert(pet);
    List<Record> pets = dao.query("t_pet", null, null);
    assertEquals(1, pets.size());
    assertEquals("abc", pets.get(0).getString("name"));
    assertEquals(now / 1000, pets.get(0).getTimestamp("birthday").getTime() / 1000);
}
Also used : Record(org.nutz.dao.entity.Record) Timestamp(java.sql.Timestamp) Issue1163Pet(org.nutz.dao.test.meta.issue1163.Issue1163Pet) Pet(org.nutz.dao.test.meta.Pet) Test(org.junit.Test)

Example 7 with Record

use of org.nutz.dao.entity.Record in project nutz by nutzam.

the class SimpleDaoTest method test_record_treemap.

@Test
public void test_record_treemap() {
    TreeMap<Record, String> map = new TreeMap<Record, String>();
    map.put(new Record(), "abc");
    map.put(new Record(), "abc");
}
Also used : Record(org.nutz.dao.entity.Record) TreeMap(java.util.TreeMap) Test(org.junit.Test)

Example 8 with Record

use of org.nutz.dao.entity.Record in project nutz by nutzam.

the class DaoUpTest method test_without_pojo.

/**
     * 1. 不使用pojo类,直接操作数据库, Chain插入,查询结果为Record(一个实现了Map接口的增强版LinkedHashMap).<p/>
     * 在nutz 1.b.38之后,均可使用类Map对象进行CRUD.<p/>
     * Chain代表插入/更新时的目标值K-V<p/>
     * Record是查询的返回类型,增强版的忽略大小写的LinkedHaskMap
     */
@Test
public // 提醒一句,下面的assert均为Junit的方法
void test_without_pojo() {
    // 首先,得到Dao实例, 因为Junit的规则就是setUp先执行,所以Dao已经初始化好了
    // me()是public静态方法,意味着你可以从任何代码访问到哦
    Dao dao = DaoUp.me().dao();
    // 弱弱地定义个表名方便操作
    String tableName = "tx_daoup_user";
    // 看看有无tx_text_user表,有的话就删掉好了
    if (dao.exists(tableName)) {
        // 没有openSession之类的事
        // 生产环境可别乱调用,死人了别找我
        dao.drop(tableName);
    }
    // 好了,现在开始建表, 其中的Sqls是Nutz中的自定义SQL的帮助类, 具体用法后面还有讲解
    // 为了最大兼容各种数据库,这里就建3个属性,不自增,没默认值
    // 如果您测试的数据库不支持下面的建表sql,自己改一下吧,呵呵.
    dao.execute(Sqls.create("create table " + tableName + " (id int, nm varchar(50), age int)"));
    // 首先,插入4条记录, 不抛异常就是执行成功(Dao接口的方法均如此)
    dao.insert(tableName, Chain.make("id", 1).add("nm", "wendal").add("age", 30));
    dao.insert(tableName, Chain.make("id", 2).add("nm", "zozoh").add("age", 60));
    dao.insert(tableName, Chain.make("id", 3).add("nm", "pangwu").add("age", 20));
    dao.insert(tableName, Chain.make("id", 4).add("nm", "ywjno").add("age", 10));
    // 我们统计一下是不是真的4条呢?
    //count方法可以查Pojo所代表的表,也可以直接写表名
    assertEquals(4, dao.count(tableName));
    // 类似的方法还有fetch/query/clear等
    // ------------------
    // --------- query操作
    // 现在查一下小于25,且按nm降序
    // Cnd是最常用的查询构建类
    List<Record> users = dao.query(tableName, Cnd.where("age", "<", 25).desc("nm"));
    // 理应是2个人
    // 忍不住提醒一句啊, 统计总数用dao.count, 因为真的有人这样写: return dao.query(XXX.class, Cnd....).size();
    assertEquals(2, users.size());
    // 因为是倒序,那第一个就是ywjno,第二个是pangwu.
    // 注意一下Record里面的key都是自动转为小写的,但值不会,这个可以放心.
    // ywjno就是冬日温泉,nutz的其中一位commiter
    assertEquals("ywjno", users.get(0).getString("nm"));
    // pangwu,胖五也, 也是commiter
    assertEquals("pangwu", users.get(1).getString("nm"));
    // 查大于15岁,且第二页,每页2条记录, 注意页数是从1开始的,若填了0,就不分页,全部记录
    users = dao.query(tableName, Cnd.where("age", ">", 15), dao.createPager(2, 2));
    // 因为大于15岁的只有3个人,又分页,所以结果应该是只有第3条记录
    assertEquals(1, users.size());
    // ^|_|^ ...
    assertEquals("pangwu", users.get(0).get("nm"));
    // --------------------------
    // --------- update和fetch操作
    //现在, 我们更新wendal的年龄,使其变成26,啊啊啊
    dao.update(tableName, Chain.make("age", 26), Cnd.where("nm", "=", "wendal"));
    // Chain是链式的可以继续接下去哦
    // Chain.make(....).add(...).add(...)
    // 或者从一个Map/Pojo转化而来 Chain.from(xxxMap) Chain.from(obj)
    // 检查一下wendal的年龄,应该是26
    assertEquals(26, dao.fetch(tableName, Cnd.where("nm", "=", "wendal")).getInt("age"));
    // 然后让pangwu老一岁,注意是用makeSpecial,而且值是特殊的+1
    dao.update(tableName, Chain.makeSpecial("age", "+1"), Cnd.where("nm", "=", "pangwu"));
    // 同样要检查一下pangwu的年龄是不是变成 20+1=21岁了
    assertEquals(21, dao.fetch(tableName, Cnd.where("nm", "=", "pangwu")).getInt("age"));
    // 再大发慈悲,让zozoh年轻10岁吧.
    dao.update(tableName, Chain.makeSpecial("age", "age-10"), Cnd.where("nm", "=", "zozoh"));
    // 同样要检查一下zozoh的年龄是不是变成 60-10=50岁了
    assertEquals(50, dao.fetch(tableName, Cnd.where("nm", "=", "zozoh")).getInt("age"));
    // 为了表达我的博爱,全部人减5岁!!
    // 提示一下, makeSpecial属于直接拼入sql, 请留意注入问题.
    dao.update(tableName, Chain.makeSpecial("age", "age-5"), null);
    // ----------------------
    // 最后是delete和clear操作,然而delete是针对单个pojo对象删除的,所以这里只演示clear
    // 首先,我们删掉zozoh,原因嘛, 没你帅/漂亮.
    dao.clear(tableName, Cnd.where("nm", "=", "zozoh"));
    // 应剩下3条记录
    assertEquals(3, dao.count(tableName));
    // 现在再干掉年龄少于20岁的
    dao.clear(tableName, Cnd.where("age", "<", 20));
    // 应剩下1条记录
    assertEquals(1, dao.count(tableName));
    // 最后,全部杀光, 啊啊啊, 减少人口啊啊啊...
    dao.clear(tableName);
    // 应剩下0条记录, 没人了...
    assertEquals(0, dao.count(tableName));
    // 最后的最后,人在表在, 人没了,表也干掉
    // 三思三思... 
    dao.drop(tableName);
}
Also used : Dao(org.nutz.dao.Dao) Record(org.nutz.dao.entity.Record) Test(org.junit.Test)

Example 9 with Record

use of org.nutz.dao.entity.Record in project nutz by nutzam.

the class GenericTest method receiveJsonRequest4Record.

@Test
@SuppressWarnings("unchecked")
public void receiveJsonRequest4Record() {
    Record record = new Record();
    record.put("a", "a");
    record.put("b", 1);
    JsonRequest<Record> request = new JsonRequest<Record>();
    request.setBody(record);
    request.setLoginName("user1");
    request.setPassword("1234");
    request.setVersion("1101");
    request.setUserType(JsonRequest.USER_TYPE_EMPLOYEE);
    String json = Json.toJson(request);
    // System.out.println(json);
    request = (JsonRequest<Record>) Json.fromJson(new NutType(request.getClass(), record.getClass()), json);
// System.out.println(request.getBody().getString("a"));
// System.out.println(request.getBody().getInt("b"));
}
Also used : NutType(org.nutz.lang.util.NutType) Record(org.nutz.dao.entity.Record) Test(org.junit.Test)

Example 10 with Record

use of org.nutz.dao.entity.Record in project nutz by nutzam.

the class SqlTemplateTest method testQueryForRecord.

@Test
public void testQueryForRecord() {
    pojos.initPet();
    Pet pet = Pet.create("papa");
    dao.insert(pet);
    String sql = "SELECT name,age FROM $table WHERE id = @id";
    Map<String, Object> vars = new HashMap<String, Object>();
    vars.put("table", "t_pet");
    Map<String, Object> params = new HashMap<String, Object>();
    params.put("id", pet.getId());
    Record re = sqlTemplate.queryForRecord(sql, vars, params);
    assertEquals(pet.getName(), re.getString("name"));
}
Also used : HashMap(java.util.HashMap) Record(org.nutz.dao.entity.Record) Pet(org.nutz.dao.test.meta.Pet) Test(org.junit.Test)

Aggregations

Record (org.nutz.dao.entity.Record)11 Test (org.junit.Test)10 Pet (org.nutz.dao.test.meta.Pet)5 Sql (org.nutz.dao.sql.Sql)4 Dao (org.nutz.dao.Dao)3 HashMap (java.util.HashMap)2 CallableStatement (java.sql.CallableStatement)1 PreparedStatement (java.sql.PreparedStatement)1 ResultSet (java.sql.ResultSet)1 Timestamp (java.sql.Timestamp)1 TreeMap (java.util.TreeMap)1 ValueAdaptor (org.nutz.dao.jdbc.ValueAdaptor)1 VarIndex (org.nutz.dao.sql.VarIndex)1 VarSet (org.nutz.dao.sql.VarSet)1 Issue1163Pet (org.nutz.dao.test.meta.issue1163.Issue1163Pet)1 SystemTeam (org.nutz.dao.util.meta.SystemTeam)1 SystemUser (org.nutz.dao.util.meta.SystemUser)1 NutType (org.nutz.lang.util.NutType)1