Package test.sql

Source Code of test.sql.TestInsertSql

package test.sql;

import org.eweb4j.config.EWeb4JConfig;
import org.eweb4j.orm.sql.InsertSqlCreator;
import org.eweb4j.orm.sql.SqlFactory;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;

import test.po.Master;
import test.po.Pet;


public class TestInsertSql {
  private static Pet pet;
  private static InsertSqlCreator<Pet> insert;

  @BeforeClass
  public static void prepare() throws Exception {
    String err = EWeb4JConfig.start("start.eweb.xml");
    if (err != null){
      System.out.println(">>>EWeb4J Start Error --> " + err);
      System.exit(-1);
    }
    pet = new Pet();
    insert = SqlFactory.getInsertSql(pet);
  }

  /**
   * 将若干个POJO的所有属性值插入数据库 例如: <code>
   *  class Pet{
   *    private Integer id;
   *    private String name;
   *    private int age;
   *      //此处省略setter和getter方法
   *  }
   *   Pet pet = new Pet();
   *  pet.setName("小黑");
   *  pet.setAge(3);
   *  insert(pet);
   * </code> 会执行sql:INSERT INTO $table values('小黑','3');
   *
   * POJO的类型
   *
   * @param ts
   *            带有数据的POJO,可多个不同类型或同类型
   * @return 如果插入成功,返回true,否则返回false.
   */
  @Test
  public <T> void testInsert() {

    pet.setName("小黑");
    pet.setAge(3);
    pet.setType("dog");

    String sql = insert.create()[0];
    Assert.assertEquals(
        "INSERT INTO t_pet(name,age,type) VALUES('小黑','3','dog')  ;",
        sql);

  }

  /**
   *
   * @throws Exception
   */
  @Test
  public void testInsertWithOneRel() throws Exception {
    Master master = new Master();
    master.setId(5);
    pet.setName("xiaohei");
    pet.setAge(2);
    pet.setMaster(master);
    String[] fields = { "name", "age", "master" };
    String sql = insert.createByFields(fields)[0];
    Assert.assertEquals(
        "INSERT INTO t_pet(name,age,master_id) VALUES('xiaohei','2','5') ;",
        sql);
  }

  /**
   * 带Where条件子句,将若干个POJO所有属性值插入数据库 <code>
   *   class Pet{
   *     private Integer id;
   *     private String name;
   *     private int age;
   *     //此处省略setter和getter方法
   *   }
   *  Pet pet = new Pet();
   *  pet.setName("小白");
   *  pet.setAge(4);
   *  insertByCondition("xxx", pet);
   * </code> 会执行sql:INSERT INTO $table values('小黑','3') WHERE xxx ;
   *
   * POJO的类型
   *
   * @param condition
   *            Where条件
   * @param ts
   *            带有数据的POJO,可多个不同类型或同类型
   * @return 如果插入成功,返回true,否则返回false
   */
  @Test
  public void testInsertByCondition() {
    pet.setName("小黑");
    pet.setAge(3);
    pet.setType("dog");
    pet.setMaster(null);
    String sql = insert.create("xxx = 'ooo'")[0];
    Assert.assertEquals(
        "INSERT INTO t_pet(name,age,type) VALUES('小黑','3','dog')  WHERE xxx = 'ooo' ;",
        sql);
  }

  /**
   * 给定POJO属性值,插入数据库 <code>
   *   class Pet{
   *     private Integer id;
   *     private String name;
   *     private int age;
   *     //此处省略setter和getter方法
   *   }
   *  class Master{
   *      private Integer id;
   *      private String name;
   *      private String gender;
   *  }
   * 
   *   Pet pet = new Pet();
   *  pet.setName("小黄");
   * 
   *  Master master = new Master();
   *  master.setGender("女");
   * 
   *  Object[] objs = new Object[]{master, pet};
   *  String[] masterFields = new String[]{"gender"};
   *  String[] petFields = new String[]{"name"};
   *  String[][] fields = new String[][]{masterFields, petFields};
   *  insertByFields(objs,masterFields, petFields);
   * </code>会执行sql:INSERT INTO $masterTable(gender) values('女');INSERT INTO
   * $petTable(name) values('小黄') ;
   *
   * POJO的类型
   *
   * @param ts
   *            带有数据的POJO,多个不同类型或同类型
   * @param fields
   *            按数组下标对应POJO的属性名
   * @return 如果插入成功,返回true,否则返回false
   */
  @Test
  public void testInsertByFields() {
    pet.setName("小黑");
    String sql = insert.createByFields(new String[] { "name" })[0];
    Assert.assertEquals("INSERT INTO t_pet(name) VALUES('小黑') ;", sql);

  }
}
TOP

Related Classes of test.sql.TestInsertSql

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.