package cn.dreampie.example; import cn.dreampie.orm.Record; import cn.dreampie.orm.TableSetting; import cn.dreampie.orm.callable.ObjectCall; import cn.dreampie.orm.callable.ResultSetCall; import cn.dreampie.orm.page.FullPage; import cn.dreampie.resource.user.model.User; import cn.dreampie.resource.user.model.UserInfo; import org.junit.BeforeClass; import org.junit.FixMethodOrder; import org.junit.Test; import org.junit.runners.MethodSorters; import java.sql.CallableStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Types; import java.util.Date; import java.util.Iterator; import java.util.List; /** * Created by ice on 15-1-4. */ @FixMethodOrder(MethodSorters.JVM) public class SqlTest { private static final String tableName = "tst_" + new Date().getTime(); @BeforeClass public static void init() { ActiveRecord.init(); } @Test public void testTable() { Record recordDAO = new Record(); recordDAO.execute("CREATE TABLE " + tableName + "(id INT NOT NULL AUTO_INCREMENT,name VARCHAR(100) NOT NULL,PRIMARY KEY(id));"); } @Test public void testColumn() { Record tstDAO = new Record(new TableSetting(tableName)); Iterator iterator = tstDAO.getTableMeta().getColumnMetadata().values().iterator(); while (iterator.hasNext()) { System.out.println(iterator.next().toString()); } } private TableSetting tableSetting = new TableSetting("sec_user", true); @Test public void testSql() { Record recordDAO = new Record(); List<Record> records = recordDAO.find("select * from sec_user"); System.out.println(records.size()); recordDAO.execute("create table tb1 select * from sec_user"); List<Record> records1 = recordDAO.find("select * from tb1"); System.out.println(records1.size()); recordDAO.execute("insert into tb1(sid,username,password,providername,created_at)values(1000,'xx','11','12','2014-10-00 10:00:00');"); } @Test public void testSave() { User u = new User().set("sid", 1).set("username", "a").set("providername", "test").set("password", "123456").set("created_at", new Date()); u.save(); User u1 = new User().set("sid", 1).set("username", "a").set("providername", "test").set("password", "123456").set("created_at", new Date()); User u2 = new User().set("sid", 1).set("username", "a").set("providername", "test").set("password", "123456").set("created_at", new Date()); UserInfo userInfo = null; if (u.get("user_info") == null) { userInfo = new UserInfo().set("gender", 0); } else { userInfo = u.get("user_info"); } if (User.dao.save(u1, u2)) { System.out.println(u.get("id") + "/" + u1.get("id")); userInfo.set("user_id", u.get("id")); userInfo.save(); } Record recordDAO = new Record(tableSetting); recordDAO.reNew().set("sid", 2).set("username", "test").set("providername", "test").set("password", "123456").set("created_at", new Date()).save(); Record r1 = recordDAO.reNew().set("sid", 2).set("username", "test").set("providername", "test").set("password", "123456").set("created_at", new Date()); Record r2 = recordDAO.reNew().set("sid", 2).set("username", "test").set("providername", "test").set("password", "123456").set("created_at", new Date()); recordDAO.save(r1, r2); } @Test public void testFind() { List<User> users = User.dao.findAll(); Long id = 1L, sid = 1L; for (User user : users) { id = user.<Long>get("id"); sid = user.<Long>get("sid"); System.out.println(user.<String>get("username")); } Record recordDAO = new Record(tableSetting); List<Record> records = recordDAO.findAll(); for (Record r : records) { System.out.println(r.<String>get("username")); } User us = User.dao.findByIds(id, sid); System.out.println("findByIds," + us.get("id") + "," + us.get("sid")); } @Test public void testPaginate() { FullPage<User> users = User.dao.unCache().fullPaginateAll(1, 10); for (User user : users.getList()) { System.out.println(user.<String>get("username")); } Record recordDAO = new Record(tableSetting); FullPage<Record> records = recordDAO.fullPaginate(1, 10, "SELECT * FROM sec_user"); for (Record record : records.getList()) { System.out.println(record.<String>get("username")); } records = recordDAO.unCache().fullPaginate(1, 10, "SELECT * FROM sec_user"); } @Test public void testUpdate() { List<User> users = User.dao.findAll(); for (User user : users) { user.set("username", "testupdate").update(); } User.dao.update("UPDATE sec_user SET username='c' WHERE username='a'"); Record recordDAO = new Record(tableSetting); List<Record> records = recordDAO.findAll(); int i = 0; for (Record record : records) { if (i % 2 == 0) record.set("username", "testupdxx").update(); i++; } } @Test public void testExcute() { //批量执行sql语句 User.dao.execute("UPDATE sec_user SET username='b' WHERE username='c'", "UPDATE sec_user SET username='x' WHERE username='test'"); } @Test public void testDelete() { List<User> users = User.dao.findAll(); Long id = 1L, sid = 1L; int i = 0; for (User user : users) { id = user.<Long>get("id"); sid = user.<Long>get("sid"); if (i == 0) { User.dao.deleteByIds(id, sid); } user.delete(); i++; } Record recordDAO = new Record(tableSetting); ; recordDAO.deleteById("1"); } //@Test public void testProcess() { //返回一个指定类型的值 Integer r = User.dao.queryCall("{CALL PROCESS(?,?)}", new ObjectCall() { public Object call(CallableStatement cstmt) throws SQLException { cstmt.setInt(1, 1); cstmt.registerOutParameter(2, Types.BIGINT); cstmt.execute(); cstmt.executeQuery(); return cstmt.getInt(2); } }); //返回ResultSet结果集 查询的某个类型的值 String str = User.dao.queryCallFirst("{CALL PROCESS(?,?)}", new ResultSetCall() { public ResultSet call(CallableStatement cstmt) throws SQLException { return null; } } ); //返回ResultSet结果集 查询的某个类型的值 List<String> rs = User.dao.queryCall("{CALL PROCESS(?,?)}", new ResultSetCall() { public ResultSet call(CallableStatement cstmt) throws SQLException { return null; } } ); //返回ResultSet结果集 封装成User的model对象 User user = User.dao.findCallFirst("{CALL PROCESS(?,?)}", new ResultSetCall() { public ResultSet call(CallableStatement cstmt) throws SQLException { //操作 return null; } }); //返回ResultSet结果集 封装成user的集合类型 List<User> userList = User.dao.findCall("{CALL PROCESS(?,?)}", new ResultSetCall() { public ResultSet call(CallableStatement cstmt) throws SQLException { //操作 return null; } }); } }