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

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

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

    First they ignore you
    then they ridicule you
    then they fight you
    then you win
        -- Mahatma Gandhi
    Chinese => English     英文 => 中文             
    隨筆-221  評論-1047  文章-0  trackbacks-0
    想用Grails這個東西生成指定為DECIMAL類型(NUMERIC類型)的字段,并控制精度, 搞了一下午未果, 于是請教山風小子, 最終兩個人試驗N次, 失敗N-1次的前提下, 最后一次終于成功了, 在這里尤其感謝山風的技術支持以及精神支持;

    成功案例記錄在這里:
    groovy(domain-class):
    class Oldtable {
    static withTable = "oldtable"
    ??? Integer id
    ??? BigDecimal? number //要為BigDecimal類型
    ??? static constraints = {
    ???????????? // 山風小子注:正確的約束應該為number(max:new BigDecimal("9999.999999"), scale:6)
    ??? ??? ??? ?number(max:1000, scale:6)??? //這個限制搞了很久才搞出來, 映射為DECIMAL(10,6)
    ??? ??? ??? }
    }
    DataSource:
    class DevelopmentDataSource {
    ?? boolean pooling = true
    ??? String dbCreate = "update" // one of 'create', 'create-drop','update'
    ??? String url = "jdbc:mysql://localhost:3306/grails"
    ??? String driverClassName = "com.mysql.jdbc.Driver"
    ??? String username = "ymiao"
    ??? String password = "letmein"
    }

    PS:
    1. 最大的感觸是: 一定要練好英語
    2. mysql里面NUMERIC類型會自動轉換為DECIMAL類型, 比如用GUI工具建表指定為NUMERIC(10,6), 會自動轉換為DECIMAL(10,6),表示最高有效數字10位, 小數點后保留6位; 這里的precision="10" scale="6", 注意數據庫里的precision是有效數字, scale表示精確到小數點后的位數
    // 山風小子注:number(max:new BigDecimal("9999.999999"), scale:6),4(小數點左側位數) + 6(scale) = 10(precision) => DECIMAL(10, 6)
    3. number(max:1000, scale:6) 這個精度限制這么寫的原因一直搞不懂, 跟山風試驗了好多次才成功的, 最后理解為1000是4位, 4+6=10, precision="10", 同理max:10000, scale:6會生成DECIMAL(11,6)類型的字段, 暫且這么理解吧...
    4. String dbCreate = "update", 這里用update, 如果數據庫中有對應的表, 則用舊表, 不會覆蓋舊表以及里面的數據
    5. mysql數據庫中
    DECIMAL(10,6)類型的數據, 通過hibernate逆向映射生成的屬性是:
    ??????? <property name="number" type="java.lang.Double">
    ??????????? <column name="number" precision="10" scale="6" not-null="true" />
    ??????? </property>
    但是在groovy里面定義為Double類型出現N多異常, 最終定義為BigDecimal類型的成功;
    6. 貼出常見類型的映射關系
    Hibernate映射類型 Java類型 標準SQL類型
    integer/int java.lang.Integer/int INTEGER 4字節
    long java.lang.Long/long BIGINT 8字節
    short java.lang.Short/short SMALLINT 2字節
    byte java.lang.Byte/byte TINYINT 1字節
    float java.lang.Float/float FLOAT 4字節
    double java.lang.Double/double DOUBLE 8字節
    big_decimal java.math.BigDecimal NUMERIC
    character java.lang.Character/java.lang.String/char CHAR(1) 定長字符
    string java.lang.String VARCHAR 變長字符
    boolean/ yes_no/true_false java.lang.Boolean/Boolean BIT 布爾類型
    date java.util.Date/java.sql.Date DATE 日期
    timestamp java.util.Date/java.util.Timestamp TIMESTAMP 日期
    calendar java.util.Calendar TIMESTAMP 日期
    calendar_date java.util.Calendar DATE 日期
    binary byte[] BLOB
    BLOB
    text java.lang.String TEXT CLOB
    serializable 實現java.io.Serializablej接口的任意Java類 BLOB BLOB
    clob java.sql.Clob CLOB CLOB
    blob java.sql.Blob BLOB BLOB
    class java.lang.Class VARCHAR 定長字符
    locale java.util.Locale VARCHAR 定長字符
    timezone java.util.TimeZone VARCHAR 定長字符
    currency java.util.Currency VARCHAR 定長字符
    7. 用于測試的mysql的schema+table
    DROP TABLE IF EXISTS `grails`.`oldtable`;
    CREATE TABLE? `grails`.`oldtable` (
    ? `id` int(11) NOT NULL,
    ? `number` decimal(10,6) NOT NULL,
    ? PRIMARY KEY? (`id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
    8. Hibernate相關
    http://docs.huihoo.com/framework/hibernate/reference-v3_zh-cn/toolsetguide.html
    http://www.itpub.net/699923.html

    // 山風小子注:成功其實就在你眼前,關鍵要看自己的恒心和毅力

    原文地址:http://miaoyachun.blog.sohu.com/43152463.html
    附:Groovy與Grails同甘共苦,苦盡甘來
    posted on 2007-04-23 00:36 山風小子 閱讀(3417) 評論(6)  編輯  收藏 所屬分類: Groovy & Grails
    主站蜘蛛池模板: 亚洲综合色婷婷在线观看| 精品一区二区三区无码免费视频| 亚洲一区二区在线视频| 亚洲国产精品一区二区第四页| 国内精自视频品线六区免费| 中国一级特黄高清免费的大片中国一级黄色片 | 亚洲无码视频在线| 日韩在线免费电影| 国产三级在线观看免费| 人妻无码久久一区二区三区免费| 一级免费黄色毛片| 国产亚洲精品免费| 亚洲heyzo专区无码综合| 国产亚洲国产bv网站在线| 久久精品国产精品亚洲毛片| 亚洲AV午夜成人影院老师机影院| 亚洲午夜日韩高清一区| 免费一级毛片一级毛片aa| 日韩精品免费电影| 在线免费观看视频你懂的| 91嫩草国产在线观看免费| 麻豆国产精品免费视频| 16女性下面无遮挡免费| 最近免费中文字幕mv在线电影| 99热在线免费观看| 97公开免费视频| 精品无码免费专区毛片| 97公开免费视频| 国产福利视精品永久免费| 午夜老司机永久免费看片| 人人玩人人添人人澡免费| 国产精品99久久免费观看| 三年片在线观看免费大全电影 | 亚洲AV无码成人精品区大在线| 国产精品美女自在线观看免费| 韩国欧洲一级毛片免费| 国产一区二区三区在线免费| 永久免费看bbb| 亚洲不卡无码av中文字幕| 久久久久亚洲AV成人网人人软件| 亚洲中文字幕在线观看|