SpringBoot + MyBatisのは、自動的に(MySQL用の)データテーブルを作成します

MyBatisのは、このように私の手の何かの歴史の中で、ほぼ2年を過ごしました

 

第一段階

自動的MyBatisのジェネレータエンティティクラス、DAOマッピングインターフェイスとのマッピングファイルを使用して生成。その後、私はおそらくプロセスはこれです、これは特に便利

データベース・テーブルに内蔵されて
生成されたエンティティ・クラス、インタフェース、およびDAOマッピングXMLファイルマッピングファイルに従って(通常のコピー&ペースト項目の)いくつかの設定、データベース・テーブル
ときに第一のデータ操作を追加する必要がある場合XMLで記述されたCRUD文は、その後、マップファイルに最終的には、インタフェースDAOインタフェース層を書き、そして
徐々に、私は突然、このようもっともっと迷惑なことがわかりました。あなたは、コンフィギュレーションファイルの多くを修正するいくつかの通常のクエリ操作を変更したいフィールドを変更し、また、既存の設定をたくさん変更する必要があります。

第二段階

先輩の指導の下、非XML道路MyBatisのへ。このように、この段階では、データ操作プロセス何か

必要な物理レイヤの設計
、データベース内のテーブルを構築するための物理層、(テーブルの非自動構築)に応じて
必要なCRUDは、単にセレクト@対応する注釈に対応するマッパーマッピングファイルでは、@など、削除します動作することができる
完全な注釈の形式を使用して、この段階で束縛XMLのうち最初の位相の使用と比較します。しかし、まだ多くの問題があります。例えば、何の自動生成されたコードが存在しない、すべてのベースのCRUDは、独自に記述する必要があります。POJO属性が20である場合、挿入、あなたの恐怖は少し長いです。

第三段階

このステージは、共通のマッパーを達成するための拡張の段階であり、マッパーマップは、一般的なマッパーのすべてを継承している、あなただけのライン上のいくつかの複雑なCRUDを作成する必要があります

そして、この記事は書くことで、独自のデータテーブルを作成する必要はありません、物理層に応じて、データテーブルが自動的に作成され、それは、ステップ2第二段階を排除すること、です。

これは私の非常にお気に入りの機能の一つですが、以来、唯一の休止状態で見つかりました。しかし、ブログを書くために兄へのオンライン検索では、あなたは(現在はMySQLのみ)MyBatisのは、自動的にデータテーブルを作成して達成することができます

このブログの記事のためのすべてのコードがすでにオープンソースに関与している、独自のコードを変更することができる特別な変更がある場合、あなたは再パッケージ化することができます

しかし、このブログの記事の内容に基づいて、SpringMvcされているので、(SpringMVCを使用してプロジェクトが、このブログの記事を書くための開発者のためのフレームワークを参照することを推奨している場合)、変更後の自身の簡単なデモをベースSpringBootを添付

SpringMvcバージョン:A.CTableオープンソースのフレームワークが自動的にテーブルを作成するように拡張MyBatisの/テーブル構造を更新/同様の一般的なCRUDを達成休止状態

SpringBoot統合A.CTable
プロジェクトディレクトリ
- COM
-設定
- MyBatisMapperScannerConfig.java
- TestConfig.java
-エンティティ
- Test.java
-マッパー
- TestMapper.java
- DemoApplication.java

依存関係
<依存>
<groupIdを> com.gitee.sunchenbin.mybatis .actable </ groupIdを>
<たartifactId> MyBatisの-acTable-強化テクノロジー</たartifactId>
<バージョン> 1.0.3 </バージョン>
</依存関係>
application.propertiesプロパティプロファイル
mybatis.table.auto =アップデート
mybatis.model.pack com.example.entity =
mybatis.database.type = MySQLの
mybatis.table.auto =を作成するときに、システムが起動し、すべてのテーブルが削除され、その後、コンフィギュレーションのモデルに基づいてテーブル構造を再構築し、操作が破壊されます元のデータ。

mybatis.table.auto =更新は、自動的に新しいしているテーブルを決定するシステムは、フィールドの種類は、フィールドを追加するフィールドを削除すべきである、変更する場合、この操作は、元のデータを破壊しません。

mybatis.table.autoはいずれも、無処理システム=ていない場合。

mybatis.model.packこの構成は、テーブルを作成するためにスキャンされる物体のパッケージ名を設定するために使用され

ばね配置文件
@Configuration
@ComponentScan(basePackages = { "com.gitee.sunchenbin.mybatis.actable.manager。*"})
publicクラスTestConfig {

@value( "$ {spring.datasource.driverクラス名}")
プライベート文字列ドライバと、

@value( "$ {spring.datasource.url}")
プライベート文字列のURL。

@value( "$ {spring.datasource.username}")
プライベート文字列のユーザ名。

@value( "$ {spring.datasource.password}")
プライベート文字列のパスワード。

@Bean
公共PropertiesFactoryBeanのconfigProperties()が例外をスロー{
PropertiesFactoryBean propertiesFactoryBean =新しいPropertiesFactoryBean()。
PathMatchingResourcePatternResolverレゾルバ=新しいPathMatchingResourcePatternResolver()。
propertiesFactoryBean.setLocations(resolver.getResources( "クラスパス*:application.properties"));
propertiesFactoryBeanを返します。
}

@Bean
公共DruidDataSourceデータソース(){
DruidDataSourceのdataSource =新しいDruidDataSource()。
dataSource.setDriverClassName(ドライバ)。
dataSource.setUrl(URL);
dataSource.setUsername(ユーザー名);
dataSource.setPassword(パスワード);
dataSource.setMaxActive(30)。
dataSource.setInitialSize(10)。
dataSource.setValidationQuery( "1 SELECT")。
dataSource.setTestOnBorrow(真の);
DataSourceを返します。
}

@Bean
公共DataSourceTransactionManager dataSourceTransactionManager(){
DataSourceTransactionManager dataSourceTransactionManager =新しいDataSourceTransactionManager();
dataSourceTransactionManager.setDataSource(データソース())。
dataSourceTransactionManagerを返します。
}

@Bean
公共SqlSessionFactoryBean sqlSessionFactoryは(){例外をスロー
SqlSessionFactoryBean sqlSessionFactoryBean =新しいSqlSessionFactoryBean()。
sqlSessionFactoryBean.setDataSource(データソース())。
PathMatchingResourcePatternResolverレゾルバ=新しいPathMatchingResourcePatternResolver()。
sqlSessionFactoryBean.setMapperLocations(resolver.getResources( "クラスパス*:。com / gitee / sunchenbin / MyBatisの/ actable /マッピング/ * / * XML"));
sqlSessionFactoryBean.setTypeAliasesPackage( "com.example.entity *。");
sqlSessionFactoryBeanを返します。
}

}
@Configuration
@AutoConfigureAfter(TestConfig.class)
パブリッククラスMyBatisMapperScannerConfig {

@Bean
公衆MapperScannerConfigurer mapperScannerConfigurerは(){例外をスロー
MapperScannerConfigurer mapperScannerConfigurer =新しいMapperScannerConfigurer()。
mapperScannerConfigurer.setBasePackage( "com.example.mapper *;。com.gitee.sunchenbin.mybatis.actable.dao *。");
mapperScannerConfigurer.setSqlSessionFactoryBeanName( "sqlSessionFactory");
mapperScannerConfigurerを返します。
}

}
注意MyBatisMapperScannerConfig和TestConfig不能合并、不然会出现@value为空的错误

实体层
@Table(名=「テスト」)
パブリッククラステストBaseModelを拡張{

プライベート静的最終長いのserialVersionUID = 5199200306752426433L。

@Column(名= "ID"、タイプ= MySqlTypeConstant.INT、長さ= 11、isKeyの=真、isAutoIncrement =真)
プライベート整数ID。

@Column(名= "名前"、タイプ= MySqlTypeConstant.VARCHAR、長さ= 111)
プライベート文字列名。

@Column(名前=「説明」、タイプ= MySqlTypeConstant.TEXT)
プライベート文字列の記述。

@Column(名前= "CREATE_TIME"、タイプ= MySqlTypeConstant.DATETIME)
プライベート日CREATE_TIME。

@Column(名前= "UPDATE_TIME"、タイプ= MySqlTypeConstant.DATETIME)
プライベート日UPDATE_TIME。

@Column(名= "ナンバー"、タイプ= MySqlTypeConstant.BIGINT、長さ= 5)
プライベートロング数;

@Column(名= "ライフサイクル"、タイプ= MySqlTypeConstant.CHAR、長さ= 1)
プライベート文字列ライフサイクル;

@Column(名前=タイプ= MySqlTypeConstant.DOUBLE、長さ= 5、decimalLength = 2)、「dekes」
プライベートダブルdekes;

//セッター省略し、ゲッター

}
注釈は、プロパティの表を作成する際に、各フィールドの属性を定義します

設定ファイルで、com.example.entity。* com.example.mapper、プロジェクトの物理層のディレクトリを交換する必要があります。*自分自身のプロジェクトマッパーディレクトリを交換する必要があります

おすすめ

転載: www.cnblogs.com/hyhy904/p/10987458.html