<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
    > 引言
    有時(shí)候我們有這樣的需求,對(duì)象有一個(gè)屬性可能有多個(gè)值,需要在數(shù)據(jù)庫(kù)中作為一個(gè)字段存儲(chǔ)

    還是以User為例,career存儲(chǔ)多個(gè)職業(yè)

    > 建表
    以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;

    > 代碼
    實(shí)體類 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);
        }

    }

    > 測(cè)試

    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 閱讀(1218) 評(píng)論(0)  編輯  收藏

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 中文字幕亚洲免费无线观看日本| 中文字幕在线观看亚洲视频| 91人成网站色www免费下载| 777亚洲精品乱码久久久久久 | 亚洲av无码一区二区三区四区 | 久久亚洲精品无码AV红樱桃| 蜜桃视频在线观看免费网址入口| 亚洲AV色无码乱码在线观看| 亚洲精品高清国产一线久久| 久久久久久免费视频| 国产福利在线观看永久免费| 亚洲一区二区三区不卡在线播放| 亚洲av区一区二区三| 91在线手机精品免费观看| 豆国产96在线|亚洲| 久久亚洲国产精品| 国产美女无遮挡免费视频网站| 最近2019中文免费字幕在线观看 | 在线观看的免费网站无遮挡| 国产区图片区小说区亚洲区| 亚洲AV无码1区2区久久| 免费人成激情视频| 综合在线免费视频| 日本免费A级毛一片| 亚洲欧美黑人猛交群| 亚洲av无码潮喷在线观看| 国产一区在线观看免费| 91精品免费不卡在线观看| 免费的黄色网页在线免费观看| 亚洲图片校园春色| 亚洲国产三级在线观看| 五月婷婷亚洲综合| 久久这里只有精品国产免费10| a在线观看免费网址大全| 苍井空亚洲精品AA片在线播放| 亚洲欧洲校园自拍都市| 国产AV无码专区亚洲Av| 亚洲国产中文v高清在线观看| 好男人视频在线观看免费看片| 无码AV片在线观看免费| 中文字幕无线码中文字幕免费|