posts - 495,  comments - 11,  trackbacks - 0

          > 準(zhǔn)備
          以MySQL為例,執(zhí)行下面的sql建立數(shù)據(jù)表
          CREATE TABLE `t_user` (                
                  `id` int(11) NOT NULL,               
                  `name` varchar(50) DEFAULT NULL,     
                  `sex` char(4) DEFAULT NULL,          
                  `age` int(11) DEFAULT NULL,          
                  `career` varchar(100) DEFAULT NULL,  
                  PRIMARY KEY (`id`)                   
          ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

          > 引入jar或maven依賴,需要jar包
          gerald-jorm-1.0.5.jar 最新版本下載:http://sourceforge.net/projects/javaclub/files
          commons-logging-1.1.1.jar
          log4j-1.2.14.jar
          mysql-connector-java-5.1.6.jar
          javassist-3.11.0.GA.jar 或 cglib-nodep-2.2.2.jar (根據(jù)實(shí)際情況選擇性加入)


          > 配置文件
          在你的java工程的classpath下建立config.properties和jdbc.cfg.xml文件
          config.properties內(nèi)容:
          # 下面路徑可以根據(jù)實(shí)際情況指定,為相對classpath的路徑地址
          jdbc.config.path=jdbc.cfg.xml

          jdbc.cfg.xml內(nèi)容:
          <?xml version='1.0' encoding="UTF-8"?>
          <jdbc-configuration>

            <constant name="show_sql" value="true" />
            <constant name="jdbc.batch_size" value="600" />
            <constant name="bytecode.provider" value="cglib" />
           
            <connections default="simple">
           
              <connection name="simple">
                <property name="connection.implementation">org.javaclub.jorm.jdbc.connection.impl.SimpleConnection</property>
                <property name="connection.dialect">MySQLDialect</property>
                <property name="connection.driver">com.mysql.jdbc.Driver</property>
                <property name="connection.jdbcurl">jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&amp;characterEncoding=UTF-8</property>
                <property name="connection.database">test</property>
                <property name="connection.username">root</property>
                <property name="connection.password">root</property>
              </connection>

              <connection name="c3p0">
                <property name="connection.implementation">org.javaclub.jorm.jdbc.connection.impl.PooledConnection</property>
                <property name="connection.dialect">MySQLDialect</property>
                <property name="connection.driver">com.mysql.jdbc.Driver</property>
                <property name="connection.jdbcurl">jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&amp;characterEncoding=UTF-8</property>
                <property name="connection.database">test</property>
                <property name="connection.username">root</property>
                <property name="connection.password">root</property>
                <property name="connection.pool.min">1</property>
                <property name="connection.pool.max">8</property>
                <property name="connection.test.sql">select 1</property>
              </connection>
              
            </connections>

          </jdbc-configuration>


          > 實(shí)體類User.java
          @PK(value = "id")
          @Entity(table="t_user")
          public class User {
              
              @Id
              private int id;

              private String name;

              private String sex;

              private Integer age;

              private String career;
              
              @NoColumn
              private int kvalue;
              
              public User() {
                  super();
              }

              public User(String name, String sex, Integer age, String career) {
                  super();
                  this.name = name;
                  this.sex = sex;
                  this.age = age;
                  this.career = career;
              }

              public User(Integer id, String name, String sex, Integer age, String career) {
                  super();
                  this.id = id;
                  this.name = name;
                  this.sex = sex;
                  this.age = age;
                  this.career = career;
              }

              public int getId() {
                  return id;
              }

              public void setId(int id) {
                  this.id = id;
              }

              public String getName() {
                  return name;
              }

              public void setName(String name) {
                  this.name = name;
              }

              public String getSex() {
                  return sex;
              }

              public void setSex(String sex) {
                  this.sex = sex;
              }

              public Integer getAge() {
                  return age;
              }

              public void setAge(Integer age) {
                  this.age = age;
              }

              public String getCareer() {
                  return career;
              }

              public void setCareer(String career) {
                  this.career = career;
              }

              public int getKvalue() {
                  return kvalue;
              }

              public void setKvalue(int kvalue) {
                  this.kvalue = kvalue;
              }

              public String toString() {
                  StringBuffer sb = new StringBuffer();
                  sb.append("[" + id + ", " + name + ", " + sex + ", " + age + ", " + career + "]");
                  return sb.toString();
              }

          }

          這里數(shù)據(jù)庫字段和java實(shí)體類User的屬性在命名上是一致的,如果不一致,比如如果表創(chuàng)建sql為:
          CREATE TABLE `t_user` (                
                  `user_id` int(11) NOT NULL,               
                  `user_name` varchar(50) DEFAULT NULL,     
                  `sex` char(4) DEFAULT NULL,          
                  `col_age` int(11) DEFAULT NULL,          
                  `career_job` varchar(100) DEFAULT NULL,  
                  PRIMARY KEY (`id`)                   
          ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

          那么對應(yīng)的實(shí)體User應(yīng)該寫成:
          @PK(value = "id")
          @Entity(table="t_user")
          public class User {
              
              @Id
              @Column("user_id")
              private int id;

              @Column("user_name")
              private String name;
                  
              // 與數(shù)據(jù)庫字段命名一致,可以不指定@Column
              private String sex;

              @Column("col_age")
              private Integer age;

              @Column("career_job")
              private String career;
              
              @NoColumn
              private int kvalue;
              
              public User() {
                  super();
              }

              public User(String name, String sex, Integer age, String career) {
                  super();
                  this.name = name;
                  this.sex = sex;
                  this.age = age;
                  this.career = career;
              }

              public User(Integer id, String name, String sex, Integer age, String career) {
                  super();
                  this.id = id;
                  this.name = name;
                  this.sex = sex;
                  this.age = age;
                  this.career = career;
              }

              public int getId() {
                  return id;
              }

              public void setId(int id) {
                  this.id = id;
              }

              public String getName() {
                  return name;
              }

              public void setName(String name) {
                  this.name = name;
              }

              public String getSex() {
                  return sex;
              }

              public void setSex(String sex) {
                  this.sex = sex;
              }

              public Integer getAge() {
                  return age;
              }

              public void setAge(Integer age) {
                  this.age = age;
              }

              public String getCareer() {
                  return career;
              }

              public void setCareer(String career) {
                  this.career = career;
              }

              public int getKvalue() {
                  return kvalue;
              }

              public void setKvalue(int kvalue) {
                  this.kvalue = kvalue;
              }

              public String toString() {
                  StringBuffer sb = new StringBuffer();
                  sb.append("[" + id + ", " + name + ", " + sex + ", " + age + ", " + career + "]");
                  return sb.toString();
              }

          }


          > 對User的增刪查改,UserCrudTest.java,記得引入junit-4.8.2.jar
          public class UserCrudTest {

              static Session session;
              
              @BeforeClass
              public static void before() {
                  session = Jorm.getSession();
              }
              
              @AfterClass
              public static void after() {
                  Jorm.free();
              }
              
              @Test
              public void save_user() {
                  session.clean(User.class);
                  User user = null;
                  for (int i = 0; i < 600; i++) {
                      String sex = (i % 2 == 0 ? "男" : "女");
                      user = new User(Strings.fixed(5), sex, Numbers.random(98), Strings.random(8));
                      session.save(user);
                  }
              }
              
              @Test // 批量保存
              public void batch_save_user() {
                  session.clean(User.class);
                  JdbcBatcher batcher = session.createBatcher();
                  User user = null;
                  for (int i = 0; i < 600; i++) {
                      String sex = (i % 2 == 0 ? "男" : "女");
                      user = new User(Strings.fixed(5), sex, Numbers.random(98), Strings.random(8));
                      batcher.save(user);
                  }
                  batcher.execute();
              }
              
              @Test
              public void loadUser() {
                  User user = session.read(User.class, 1);
                  // 這里user是一個(gè)代理對象,因?yàn)?#64;Entity(table="t_user", lazy = true)
                  System.out.println(user.getCareer());// 發(fā)出查詢sql
              }
              
              @Test
              public void deletUser() {
                  User user = session.read(User.class, 1);
                  if(null != user) {
                      session.delete(user);
                  }
                  user = session.read(User.class, 1);
                  System.out.println(user);
              }
              
              @Test
              public void test_update_proxy() {
                  
                  User u;
                  u = session.read(User.class, 2);
                  Assert.assertNotNull(u);
                  Assert.assertTrue(u instanceof JormProxy);
                  
                  u.setName("Gerald.Chen");
                  session.update(u);
                  System.out.println(u.getName());
                  u = session.read(User.class, 2);
                  Assert.assertTrue("Gerald.Chen".equals(u.getName()));
              }
              
              @Test
              public void queryUser() {
                  SqlParams<User> params = new SqlParams<User>();
                  params.setObjectClass(User.class);
                  params.setFirstResult(8);
                  params.setMaxResults(20);
                  List<User> users = session.list(params);
                  System.out.println(users.size());
                  System.out.println(users);
              }
              
          }

          posted on 2011-09-21 18:42 jadmin 閱讀(1422) 評論(5)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 抚顺县| 积石山| 明光市| 宣恩县| 盱眙县| 金华市| 密云县| 南汇区| 三亚市| 措美县| 镶黄旗| 龙泉市| 济南市| 巴南区| 图片| 娱乐| 新巴尔虎左旗| 石嘴山市| 杭锦后旗| 额济纳旗| 和田县| 红原县| 宣城市| 尼勒克县| 崇礼县| 右玉县| 绥阳县| 阿尔山市| 洞口县| 扎鲁特旗| 石门县| 喀什市| 富裕县| 苍山县| 台北县| 彰武县| 多伦县| 双城市| 武夷山市| 平原县| 武陟县|