<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 495,  comments - 11,  trackbacks - 0
    > 引言
    有時候我們有這樣的需求,對象有一個屬性可能有多個值,需要在數據庫中作為一個字段存儲

    還是以User為例,career存儲多個職業

    > 建表
    以MySQL為例,執行下面的sql建立數據表
    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;

    > 代碼
    實體類 User.java
    @Entity(table = "t_user")
    @PK(value 
    = "id")
    public class User implements Serializable {

        
    /** desc */
        
    private static final long serialVersionUID = -4750351638245912867L;

        @Id
        
    private int id;

        
    private String name;

        
    private String sex;

        
    private Integer age;

        @Basic(processor
    =DefinedFieldProcessor.class)
        
    private String[] career;

        @NoColumn
        
    private int kvalue;

        
    public JawaUser() {
            
    super();
        }

        
    public JawaUser(String name, String sex, Integer age, String[] career) {
            
    super();
            
    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() {
            
    return "User [age=" + age + ", career=" + Arrays.toString(career)
                    
    + ", id=" + id + ", kvalue=" + kvalue + ", name=" + name
                    
    + ", sex=" + sex + "]";
        }
    }
    屬性字段處理類 DefinedFieldProcessor.java

    import java.lang.reflect.Field;
    import java.sql.ResultSet;
    import java.sql.SQLException;

    import org.javaclub.jorm.Session;
    import org.javaclub.jorm.common.CommonUtil;
    import org.javaclub.jorm.common.Reflections;
    import org.javaclub.jorm.jdbc.process.FieldProcessor;

    public
     class DefinedFieldProcessor implements FieldProcessor {

        
    public Object insert(Session session, Object entity, Field field) {
            String[] crs 
    = (String[]) Reflections.getFieldValue(entity, field);
            
    if(!CommonUtil.isEmpty(crs)) {
                StringBuilder sbf 
    = new StringBuilder();
                
    for (int i = 0; i < crs.length; i++) {
                    
    if(i > 0) {
                        sbf.append(
    ",");
                    }
                    sbf.append(crs[i]);
                }
                
    return sbf.toString();
            }
            
    return "";
        }

        
    public void load(Session session, Object entity, Field field, ResultSet rs,
                
    int idx) throws SQLException {
            String str 
    = rs.getString(idx);
            String[] crs 
    = str.split(",");
            Reflections.setFieldValue(entity, field, crs);
        }

    }

    > 測試

    import org.javaclub.jorm.Jorm;
    import org.javaclub.jorm.Session;
    import org.javaclub.jorm.common.Numbers;
    import org.javaclub.jorm.common.Strings;
    import org.junit.AfterClass;
    import org.junit.BeforeClass;
    import org.junit.Test;

    public
     class FieldProcessorTest {

        
    static Session session;

        @BeforeClass
        
    public static void setUpBeforeClass() {
            session 
    = Jorm.getSession();
        }

        @AfterClass
        
    public static void destroy() {
            Jorm.free();
        }

        @Test
        
    public void test_save() {

            session.clean(User.
    class);
            User u;
            
    for (int i = 0; i < 100; i++) {
                String sex 
    = (i % 2 == 0 ? "" : "");
                String[] cr 
    = {};
                
    if(i % 3 == 0) {
                    cr 
    = new String[] {Strings.fixed(2), Strings.random(5), Strings.fixed(6)};
                } 
    else if(i % 3 == 1) {
                    cr 
    = new String[] {Strings.fixed(2), Strings.random(5)};
                } 
    else {
                    cr 
    = new String[] {Strings.fixed(2)};
                }
                u 
    = new User(Strings.fixed(6), sex, Numbers.random(100), cr);
                session.save(u);
            }

            
    for (int i = 0; i < 10; i++) {
                u 
    = session.read(User.class, i + 1);
                System.out.println(u);
            }
        }
    }
    posted on 2011-09-22 20:16 jadmin 閱讀(1227) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲欧洲日产国产综合网| 亚洲AV无码专区在线亚| 亚洲AV综合色区无码另类小说| 91亚洲精品自在在线观看| 337p日本欧洲亚洲大胆人人| 青青青国产手机频在线免费观看 | 亚洲精品电影天堂网| 深夜福利在线免费观看| **俄罗斯毛片免费| 国产日韩成人亚洲丁香婷婷| 国产精品亚洲精品青青青| 久久国产乱子伦精品免费强| 日韩精品成人亚洲专区| 亚洲欧洲日韩国产一区二区三区 | 亚洲综合激情视频| 国产免费丝袜调教视频| 亚洲日本一区二区一本一道| 国产成人精品日本亚洲专一区| 台湾一级毛片永久免费| 亚洲四虎永久在线播放| 99精品视频免费在线观看| 国产成人麻豆亚洲综合无码精品| 亚洲第一成年免费网站| 97碰公开在线观看免费视频| 亚洲免费人成视频观看| 成年女人免费v片| 亚洲国产亚洲片在线观看播放| 日本免费网址大全在线观看| 亚洲精华国产精华精华液| 亚洲成年人啊啊aa在线观看| 最新亚洲人成网站在线观看| 国产成人精品久久亚洲| 最近免费中文在线视频| 亚洲高清一区二区三区电影| 中文字幕亚洲综合久久菠萝蜜| 最近中文字幕大全中文字幕免费 | 亚洲国产精品13p| 亚洲成人影院在线观看| 3344在线看片免费| 国产精品亚洲一区二区三区在线| 一级毛片在线免费视频|