解决方案 »

  1.   


    非常感谢,下面是一段示例代码
    package org.sosostudio.dbunifier.test;import org.sosostudio.dbunifier.DbUnifier;
    import org.sosostudio.dbunifier.Row;
    import org.sosostudio.dbunifier.RowSet;
    import org.sosostudio.dbunifier.dbsource.DbSource;
    import org.sosostudio.dbunifier.dbsource.JdbcDbSource;
    import org.sosostudio.dbunifier.oom.Direction;
    import org.sosostudio.dbunifier.oom.OrderByClause;
    import org.sosostudio.dbunifier.oom.SelectSql;public class Sample { public static void main(String[] args) {
    DbSource dbSource = new JdbcDbSource("com.mysql.jdbc.Driver",
    "jdbc:mysql://localhost:3306/test", "root", "password");
    DbUnifier unifier = new DbUnifier(dbSource);
    SelectSql selectSql = new SelectSql()
    .setTableName("CS_USER")
    .setColumns("*")
    .setOrderByClause(
    new OrderByClause().addOrder("USERNAME", Direction.ASC));
    RowSet rowSet = unifier.executeSelectSql(selectSql, 3, 2);
    for (int i = 0; i < rowSet.size(); i++) {
    Row row = rowSet.getRow(i);
    String username = row.getString("USERNAME");
    System.out.println(username);
    }
    }}
      

  2.   

    顶,现在在用hibernate,有时间试试.
      

  3.   

    加入了后以后就可能像是 apache的  成员了吗
      

  4.   

    我想加入,我是在校生,现在大三,有java和c基础,想历练历练
      

  5.   

    ORM是我用Hibernate等框架的主要原因,虽然不觉得他们足够好用。
    楼主做的我理解为ORM之下的数据库接口抽象,仍然是在SQL层面上,而HB之类做的是更深层a的包装,即使我没有SQL基础也能用的API(至少是他们最初的目的)。
    不是我泼楼主冷水,我只是说我的想法:我并不看好这样的项目,至少是现在这个阶段。
      

  6.   

    当然了。。项目叫DbUnifier本身也就说明了它并不是一个ORM的项目
      

  7.   

    支持, 我java基础还不错,想参加...  现在大三,这个月要复习4级,还报了oralce班, 时间估计不太多,楼主,可以吗?
      

  8.   

    极度厌恶25、26楼的观点不敢随意评价楼主东西的好坏,但是别人做的东西,你不喜欢就不喜欢吧,没必要在这泼冷水。很多东西在最初的时候都会遇到像这两层这样的 阻力,希望 楼主不要受到干扰。这类东西都出来多少可用框架了?还在这咬别人吃过的?做开源又不是写论文,到处复制就能搞!做这个东西,思想创新不说没有,有也很难,技术创新?那更没有,而且你看看贴出的带码,哪一点比现成的好?这还不如国产linux的噱头呢。。
    专业泼冷水的 
      

  9.   

    呵呵一片叫好 可能楼主还以为自己做的东西多好呢,得让他知道不足
    你如果不是写代码的,说没有用的,我也就不说什么了
    可以你是写代码的,业内人氏,代码你看了么?
    谁要是说,楼主的项目 能比得上 apache 或者 google的开源项目,说死我也不信
    可以 大哥,拜托你品论之前,先去看看代码,
      

  10.   

    泼冷水是正常的,这样的工具确实多如牛毛,而且成熟的组件也不少,只是喜欢用成熟产品的确实没必要再来了解这个开源项目。
    JDBC成熟吧,为什么还要搞出Hibernate,搞出iBatis,还有DBUtils、SpringJdbcTemplate这样的东西,按你们的想法这完全没必要嘛。
    这都是每个开源项目从自己使用的经验判断出来的他们认为最佳实现,综合了性能、易用性、功能等各种因素的结果。我们对这个开源项目也是有定位的,也是我们所认为的最佳实践结果(当然还值得去推敲和调整),而且在我们的项目中也得到了泛的应用(当然这次又进一步做了一些调整)。
    希望旁观者也不用吐嘈,不喜国内开源项目的就请绕道。提出你的建议和想法才是我们想看到的,我们可以互相探讨,取长补短,共同进步。
      

  11.   

    贴一段自动生成的类
    package org.sosostudio.dbunifier.test.dao;

    import java.io.Serializable;
    import java.math.BigDecimal;
    import java.sql.Timestamp;import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.Id;
    import javax.persistence.Table;
    import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;import org.sosostudio.dbunifier.autocode.TimestampXmlAdapter;/**
     * SYS_TEST
     *
     * @author generated by db-unifier autocode
     */
    @SuppressWarnings("serial")
    @Entity
    @Table(name = "SYS_TEST")
    public class SysTest implements Serializable { public static final String SYS_TEST = "SYS_TEST"; public static final String ST_VALUE = "ST_VALUE"; public static final String NM_VALUE = "NM_VALUE"; public static final String DT_VALUE = "DT_VALUE"; @Id
    @Column(name = "ST_VALUE")
    private String stValue; @Column(name = "NM_VALUE")
    private BigDecimal nmValue; @Column(name = "DT_VALUE")
    private Timestamp dtValue; public String getStValue() {
    return stValue;
    } public void setStValue(String stValue) {
    this.stValue = stValue;
    } public BigDecimal getNmValue() {
    return nmValue;
    } public void setNmValue(BigDecimal nmValue) {
    this.nmValue = nmValue;
    } @XmlJavaTypeAdapter(TimestampXmlAdapter.class)
    public Timestamp getDtValue() {
    return dtValue;
    } public void setDtValue(Timestamp dtValue) {
    this.dtValue = dtValue;
    }}package org.sosostudio.dbunifier.test.dao;import java.util.ArrayList;
    import java.util.List;import org.sosostudio.dbunifier.DbUnifier;
    import org.sosostudio.dbunifier.Row;
    import org.sosostudio.dbunifier.RowSet;
    import org.sosostudio.dbunifier.autocode.PaginationArrayList;
    import org.sosostudio.dbunifier.oom.ConditionClause;
    import org.sosostudio.dbunifier.oom.DeleteSql;
    import org.sosostudio.dbunifier.oom.ExtraClause;
    import org.sosostudio.dbunifier.oom.InsertKeyValueClause;
    import org.sosostudio.dbunifier.oom.InsertSql;
    import org.sosostudio.dbunifier.oom.LogicalOp;
    import org.sosostudio.dbunifier.oom.OrderByClause;
    import org.sosostudio.dbunifier.oom.RelationOp;
    import org.sosostudio.dbunifier.oom.SelectSql;
    import org.sosostudio.dbunifier.oom.UpdateKeyValueClause;
    import org.sosostudio.dbunifier.oom.UpdateSql;/**
     * SYS_TEST
     *
     * @author generated by db-unifier autocode
     */
    public class SysTestDao { private DbUnifier unifier; public SysTestDao() {
    unifier = new DbUnifier();
    }

    public SysTestDao(DbUnifier unifier) {
    this.unifier = unifier;
    } public int addSysTest(SysTest sysTest) {
    InsertSql insertSql = new InsertSql().setTableName(SysTest.SYS_TEST)
    .setInsertKeyValueClause(
    new InsertKeyValueClause()
    .addStringClause(SysTest.ST_VALUE, sysTest.getStValue())
    .addNumberClause(SysTest.NM_VALUE, sysTest.getNmValue())
    .addTimestampClause(SysTest.DT_VALUE, sysTest.getDtValue())
    );
    return unifier.executeInsertSql(insertSql);
    } public int updateSysTest(SysTest sysTest) {
    UpdateSql updateSql = new UpdateSql().setTableName(SysTest.SYS_TEST)
    .setUpdateKeyValueClause(
    new UpdateKeyValueClause()
    .addStringClause(SysTest.ST_VALUE, sysTest.getStValue())
    .addNumberClause(SysTest.NM_VALUE, sysTest.getNmValue())
    .addTimestampClause(SysTest.DT_VALUE, sysTest.getDtValue())
    ).setConditionClause(
    new ConditionClause(LogicalOp.AND)
    .addStringClause(SysTest.ST_VALUE, RelationOp.EQUAL, sysTest.getStValue())
    );
    return unifier.executeUpdateSql(updateSql);
    } public int updateSysTest(UpdateKeyValueClause updateKeyValueClause, ConditionClause conditionClause) {
    UpdateSql updateSql = new UpdateSql().setTableName(SysTest.SYS_TEST)
    .setUpdateKeyValueClause(updateKeyValueClause)
    .setConditionClause(conditionClause);
    return unifier.executeUpdateSql(updateSql);
    }

    public int deleteSYS_TEST(ConditionClause conditionClause) {
    DeleteSql deleteSql = new DeleteSql().setTableName(SysTest.SYS_TEST)
    .setConditionClause(conditionClause);
    return unifier.executeDeleteSql(deleteSql);
    } public PaginationArrayList<SysTest> querySYS_TEST(ConditionClause conditionClause, ExtraClause extraClause, OrderByClause orderByClause, int pageSize, int pageNumber) {
    SelectSql selectSql = new SelectSql().setTableName(SysTest.SYS_TEST)
    .setColumns("*")
    .setConditionClause(conditionClause)
    .setExtraClause(extraClause)
    .setOrderByClause(orderByClause);
    RowSet rowSet = unifier.executeSelectSql(selectSql, pageSize, pageNumber);
    PaginationArrayList<SysTest> pal = new PaginationArrayList<SysTest>(rowSet.getPageSize(), rowSet.getPageNumber(), rowSet.getTotalRowCount());
    for (int i = 0; i < rowSet.size(); i++) {
    Row row = rowSet.getRow(i);
    SysTest sysTest = new SysTest();
    sysTest.setStValue(row.getString(SysTest.ST_VALUE));
    sysTest.setNmValue(row.getNumber(SysTest.NM_VALUE));
    sysTest.setDtValue(row.getTimestamp(SysTest.DT_VALUE));
    pal.add(sysTest);
    }
    return pal;
    } public List<SysTest> query(ConditionClause conditionClause, ExtraClause extraClause, OrderByClause orderByClause) {
    SelectSql selectSql = new SelectSql().setTableName(SysTest.SYS_TEST)
    .setColumns("*")
    .setConditionClause(conditionClause)
    .setExtraClause(extraClause)
    .setOrderByClause(orderByClause);
    RowSet rowSet = unifier.executeSelectSql(selectSql);
    ArrayList<SysTest> al = new ArrayList<SysTest>();
    for (int i = 0; i < rowSet.size(); i++) {
    Row row = rowSet.getRow(i);
    SysTest sysTest = new SysTest();
    sysTest.setStValue(row.getString(SysTest.ST_VALUE));
    sysTest.setNmValue(row.getNumber(SysTest.NM_VALUE));
    sysTest.setDtValue(row.getTimestamp(SysTest.DT_VALUE));
    al.add(sysTest);
    }
    return al;
    }}
      

  12.   

    强烈支持,可惜目前事情比较多。过两个月如果有空,我也研究下。目前用的比较多的还是hibernate和mybatis。
      

  13.   

    极度厌恶25、26楼的观点不敢随意评价楼主东西的好坏,但是别人做的东西,你不喜欢就不喜欢吧,没必要在这泼冷水。很多东西在最初的时候都会遇到像这两层这样的 阻力,希望 楼主不要受到干扰。我们只是告诉楼主  踏实做事  别弄那没用的  如果真想做  做点别人没做过的或者网上搜到很少的东西
    其实楼主做这个也挺好的,重要的是要做的好用,就像Jfinal一样,做的就非常不错
      

  14.   

    极度厌恶25、26楼的观点不敢随意评价楼主东西的好坏,但是别人做的东西,你不喜欢就不喜欢吧,没必要在这泼冷水。很多东西在最初的时候都会遇到像这两层这样的 阻力,希望 楼主不要受到干扰。我们只是告诉楼主  踏实做事  别弄那没用的  如果真想做  做点别人没做过的或者网上搜到很少的东西
    其实楼主做这个也挺好的,重要的是要做的好用,就像Jfinal一样,做的就非常不错通用的东西一定不好用
      

  15.   

    极度厌恶25、26楼的观点不敢随意评价楼主东西的好坏,但是别人做的东西,你不喜欢就不喜欢吧,没必要在这泼冷水。很多东西在最初的时候都会遇到像这两层这样的 阻力,希望 楼主不要受到干扰。我们只是告诉楼主  踏实做事  别弄那没用的  如果真想做  做点别人没做过的或者网上搜到很少的东西
    其实楼主做这个也挺好的,重要的是要做的好用,就像Jfinal一样,做的就非常不错通用的东西一定不好用这是个度的问题,所有的开发工具都是在易用性和功能强大之间做了权衡的结果
      

  16.   

    这玩意貌似Mybatis基本上都能干吧
      

  17.   


    按你这个逻辑,iBatis的功能貌似jdbc也都能干吧,哈哈,这是个权衡性能、功能和易用性的问题啊