package cn.org.rapid_framework.jdbc.sqlgenerator; import static org.junit.Assert.assertEquals; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.sql.DataSource; import org.junit.Test; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.jdbc.core.simple.SimpleJdbcTemplate; import cn.org.rapid_framework.jdbc.sqlgenerator.metadata.Column; import cn.org.rapid_framework.jdbc.sqlgenerator.metadata.Table; import cn.org.rapid_framework.test.hsql.HSQLMemDataSourceUtils; public class SqlGeneratorTest { Table table = new Table("user",new Column("user_id","userId",true),new Column("user_name","userName"),new Column("pwd","pwd")); SqlGenerator singleGenerator = new SpringNamedSqlGenerator(table); Table multiKeyTable = new Table("user",new Column("user_id","userId",true),new Column("group_id","groupId",true),new Column("user_name","userName"),new Column("pwd","pwd")); SqlGenerator multiGenerator = new CacheSqlGenerator( new SpringNamedSqlGenerator(multiKeyTable)); @Test public void getInsertSql(){ assertEquals("INSERT INTO user (user_id,user_name,pwd ) VALUES ( :userId,:userName,:pwd ) ",singleGenerator.getInsertSql()); assertEquals("INSERT INTO user (user_id,group_id,user_name,pwd ) VALUES ( :userId,:groupId,:userName,:pwd ) ",multiGenerator.getInsertSql()); } @Test public void getUpdateByPkSql(){ assertEquals("UPDATE user SET user_name = :userName,pwd = :pwd WHERE user_id = :userId",singleGenerator.getUpdateByPkSql()); assertEquals("UPDATE user SET user_name = :userName,pwd = :pwd WHERE user_id = :userId AND group_id = :groupId",multiGenerator.getUpdateByPkSql()); } @Test public void getDeleteByPkSql(){ assertEquals("DELETE FROM user WHERE user_id = ?",singleGenerator.getDeleteByPkSql()); assertEquals("DELETE FROM user WHERE user_id = :userId AND group_id = :groupId",multiGenerator.getDeleteByPkSql()); } @Test public void getSelectByPkSql(){ assertEquals("SELECT user_id userId,user_name userName,pwd pwd FROM user WHERE user_id = ?",singleGenerator.getSelectByPkSql()); assertEquals("SELECT user_id userId,group_id groupId,user_name userName,pwd pwd FROM user WHERE user_id = :userId AND group_id = :groupId",multiGenerator.getSelectByPkSql()); } @Test public void getColumnsSql(){ assertEquals("user_id userId,user_name userName,pwd pwd",singleGenerator.getColumnsSql()); assertEquals("user_id userId,group_id groupId,user_name userName,pwd pwd",multiGenerator.getColumnsSql()); } Table t3 = new Table("user",new Column("user_id","userId",true),new Column("user_name","userName",false,true,false,false),new Column("pwd","pwd",false,false,true,false)); SqlGenerator t3g = new SpringNamedSqlGenerator(t3); Table t4 = new Table("user",new Column("user_id","userId",true),new Column("group_id","groupId",true),new Column("user_name","userName",false,false,false,false)); SqlGenerator t4g = new SpringNamedSqlGenerator(t4); @Test public void test_insertable_and_updatable() { assertEquals("INSERT INTO user (user_id,pwd ) VALUES ( :userId,:pwd ) ",t3g.getInsertSql()); assertEquals("UPDATE user SET user_name = :userName WHERE user_id = :userId",t3g.getUpdateByPkSql()); assertEquals("INSERT INTO user (user_id,group_id ) VALUES ( :userId,:groupId ) ",t4g.getInsertSql()); assertEquals("UPDATE user SET WHERE user_id = :userId AND group_id = :groupId",t4g.getUpdateByPkSql()); } DataSource ds = HSQLMemDataSourceUtils.getDataSource("create table user (user_id bigint primary key,user_name varchar(50),pwd varchar(50) )"); NamedParameterJdbcTemplate template = new NamedParameterJdbcTemplate(ds); SimpleJdbcTemplate simpleTemplate = new SimpleJdbcTemplate(ds); Table t = new Table("user",new Column("user_id","userId",true),new Column("user_name","userName"),new Column("pwd","pwd")); SqlGenerator sg = new SpringNamedSqlGenerator(t); Map data = new HashMap(); @Test public void testJdbcWithSqlGenerator() { data.put("userId", 1); data.put("userName", "badqiu"); data.put("pwd", "123456"); //insert template.update(sg.getInsertSql(),data); //select by id List results = simpleTemplate.queryForList(sg.getSelectByPkSql(),1); assertEquals(results.size(),1); //update data.put("pwd", "abc123"); template.update(sg.getUpdateByPkSql(),data); results = simpleTemplate.queryForList(sg.getSelectByPkSql(),1); assertEquals(((Map)results.get(0)).get("pwd"),"abc123"); //delete simpleTemplate.update(sg.getDeleteByPkSql(), 1); results = simpleTemplate.queryForList(sg.getSelectByPkSql(),1); assertEquals(results.size() , 0); } }