最近有小伙伴問我mybatis有沒有自動創建表結構的功能,因為他們之前一直使用hibernate用習慣了,理所當然的認為,在實體類上配置下注解或者寫寫映射文件,系統啟動后就可以自動創建表。
我只能很遺憾的告訴他,mybatis并沒有這個功能,看他興致闌珊的樣子,我只能安慰他,就算沒有這功能,我們可以自己開發啊~~
所以就有了下面這套系統,已開源大家可以下來看看~~
Mybatis_BuildTable_V0.2
https://git.oschina.net/sunchenbin/Mybatis_BuildTable_V0.2.git
該項目架構使用的是SpringMvc+Mybatis+Maven,功能特點是通過配置model注解的方式來創建表,修改表結構,目前僅支持Mysql,因為重點是突出mybatis自動創表的功能,所以在框架上沒有話太多心思。
使用規范:
核心代碼都在model-store-repo中
1.SysMysqlColumns.java這個對象里面配置的是mysql的數據類型,這里配置的類型越多,意味著創建表時能使用的類型越多
2.LengthCount.java是一個自定義的注解,用于標記在SysMysqlColumns.java里面配置的數據類型上的,標記該類型需要設置幾個長度,如datetime/varchar(1)/decimal(5,2),分別是需要設置0個1個2個
3.Column.java也是一個自定義的注解,用于標記model中的字段上,作為創建表的依據如不標記,不會被掃描到,有幾個屬性用來設置字段名、字段類型、長度等屬性的設置,詳細請看代碼上的注釋
4.Table.java也是一個自定義的注解,用于標記在model對象上,有一個屬性name,用于設置該model生成表后的表名,如不設置該注解,則該model不會被掃描到
ok,系統啟動后會去自動調用SysMysqlCreateTableManagerImpl.java的createMysqlTable()方法,沒錯,這就是核心方法了,負責創建、刪除、修改表。
model-store-frontend/resources/config/autoCreateTable.properties
你會發現有這樣一個配置文件,其中有兩項配置
1.mybatis.table.auto=update
2.mybatis.model.pack=com.sunchenbin.store.model
本系統提供兩種模式:
1.當mybatis.table.auto=create時,系統啟動后,會將所有的表刪除掉,然后根據model中配置的結構重新建表,該操作會破壞原有數據。
2.當mybatis.table.auto=update時,系統會自動判斷哪些表是新建的,哪些字段要修改類型等,哪些字段要刪除,哪些字段要新增,該操作不會破壞原有數據。
3.mybatis.model.pack這個配置是用來配置要掃描的用于創建表的對象的包名
系統配置的是使用maven來啟動的,web依賴repo,frontend和mobile依賴web,所以要運行frontend和mobile,必須先instal一下web和repo
至于如何用maven啟動項目….不再多說了。
以上所述是小編給大家介紹的Mybatis自動創建表和更新表結構的全部敘述,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!