<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)航:
     
    主站蜘蛛池模板: 国产乱码免费卡1卡二卡3卡| 久久国产乱子伦精品免费午夜| 亚洲乱码国产一区网址| 国产一区视频在线免费观看| 2020国产精品亚洲综合网| 18女人毛片水真多免费| 亚洲视频中文字幕| 四虎最新永久免费视频| 亚洲av无码不卡久久| 日韩一区二区a片免费观看| 亚洲人午夜射精精品日韩| 97久久精品亚洲中文字幕无码 | 亚洲综合色区中文字幕| 无人在线直播免费观看| 亚洲午夜精品一区二区麻豆| 日本免费网站观看| 人人公开免费超级碰碰碰视频| 国产成人精品日本亚洲专区| A国产一区二区免费入口| 精品亚洲麻豆1区2区3区| 免费不卡视频一卡二卡| 国产成人人综合亚洲欧美丁香花| 免费很黄很色裸乳在线观看| 全黄大全大色全免费大片| 国产福利免费观看| 亚洲欧洲中文日产| 中文字字幕在线高清免费电影| 午夜时刻免费入口| 一个人看的在线免费视频| 久久精品国产亚洲| 成人免费淫片在线费观看| 亚洲精品一区二区三区四区乱码| 成人久久免费网站| 亚洲免费在线观看| 久久免费区一区二区三波多野| 亚洲国产中文在线视频| 亚洲精品一级无码中文字幕| 99re6热视频精品免费观看| 亚洲av无码偷拍在线观看| 在线播放亚洲第一字幕| WWW国产成人免费观看视频|