ORM框架的本質(zhì)是簡化編程中操作數(shù)據(jù)庫的編碼协屡,發(fā)展到現(xiàn)在基本上就剩兩家了俏脊。
一個是宣稱可以不用寫一句SQL的Hibernate,一個是可以靈活調(diào)試動態(tài)sql的MyBatis,兩者各有特點肤晓,在企業(yè)級系統(tǒng)開發(fā)中可以根據(jù)需求靈活使用爷贫。
發(fā)現(xiàn)一個有趣的現(xiàn)象:傳統(tǒng)企業(yè)大都喜歡使用hibernate,互聯(lián)網(wǎng)行業(yè)通常使用mybatis认然。
Hibernate特點就是所有的sql都用Java代碼來生成,不用跳出程序去寫(看)sql漫萄,有著編程的完整性卷员,發(fā)展到最頂端就是Spring Data Jpa這種模式了,基本上根據(jù)方法名就可以生成對應(yīng)的sql了腾务,有不太了解的可以看Spring Data Jpa的使用毕骡。
MyBatis初期使用比較麻煩,需要各種配置文件岩瘦、實體類未巫、dao層映射關(guān)聯(lián)、還有一大推其它配置启昧。當(dāng)然mybatis也發(fā)現(xiàn)了這種弊端橱赠,初期開發(fā)了generator可以根據(jù)表結(jié)果自動生產(chǎn)實體類、配置文件和dao層代碼箫津,可以減輕一部分開發(fā)量狭姨;后期也進行了大量的優(yōu)化可以使用注解了,自動管理dao層和配置文件等苏遥,發(fā)展到最頂端就是今天要講的這種模式了饼拍,mybatis-spring-boot-starter就是springboot+mybatis可以完全注解不用配置文件,也可以簡單配置輕松上手田炭。
現(xiàn)在想想Spring Boot就是方便呀师抄,任何東西只要關(guān)聯(lián)到Spring Boot都是化繁為簡。
官方說明:MyBatis Spring-Boot-Starter will help you use MyBatis with Spring Boot
寫的比較簡單教硫,有疑問可以聯(lián)系
leiyang_39@163.com
.
- mybatis-generator 使用教程
- 可以直接在項目中使用叨吮,但是感覺不靈活,個人喜好單獨摘出來使用瞬矩。
- 下載mybatis-generator包
- 下載mysql-connector-java包
- 生目錄結(jié)構(gòu)(
tree /f
查看目錄結(jié)構(gòu))
D:. │ generator.xml │ mybatis-generator-core-1.3.5.jar │ mysql-connector-java-5.1.30.jar │ 生成語句.txt │ ├─java │ └─com │ └─ranhan │ ├─dao │ │ WalletLogsMapper.java │ │ │ └─model │ WalletLogs.java │ WalletLogsExample.java │ └─resources └─mapper WalletLogsMapper.xml
- 配置生成文件
generator.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <!-- 數(shù)據(jù)庫驅(qū)動包位置 --> <classPathEntry location="D:\mybatis-generator\mysql-connector-java-5.1.30.jar" /> <context id="DB2Tables" targetRuntime="MyBatis3"> <commentGenerator> <property name="suppressAllComments" value="true" /> </commentGenerator> <!-- 數(shù)據(jù)庫鏈接URL茶鉴、用戶名、密碼 --> <!-- <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://115.29.164.59:3306/storedb" userId="cloudbridge" password="demonWang0510"> --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://192.168.0.133:3306/ranbb" userId="admin" password="123456"> </jdbcConnection> <javaTypeResolver> <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <!-- 生成模型的包名和位置 --> <javaModelGenerator targetPackage="com.ranhan.model" targetProject="D:\mybatis-generator\java"> <property name="enableSubPackages" value="true" /> <property name="trimStrings" value="true" /> </javaModelGenerator> <!-- 生成的映射文件包名和位置 --> <sqlMapGenerator targetPackage="mapper" targetProject="D:\mybatis-generator\resources"> <property name="enableSubPackages" value="true" /> </sqlMapGenerator> <!-- 生成DAO的包名和位置 --> <javaClientGenerator type="XMLMAPPER" targetPackage="com.ranhan.dao" targetProject="D:\mybatis-generator\java"> <property name="enableSubPackages" value="true" /> </javaClientGenerator> <!-- 要生成那些表(更改tableName和domainObjectName就可以) --> <table tableName="wallet_logs" domainObjectName="WalletLogs" enableCountByExample="true" enableUpdateByExample="true" enableDeleteByExample="true" enableSelectByExample="true" selectByExampleQueryId="true" /> </context> </generatorConfiguration>
- 執(zhí)行生成語句
java -jar mybatis-generator-core-1.3.5.jar -configfile generator.xml -overwrite
- 配置MySQL數(shù)據(jù)庫
-
pom.xml
引入依賴
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!-- MySQL --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql-connector-java.version}</version> </dependency>
-
application.properties
配置數(shù)據(jù)源和服務(wù)名稱及端口
spring.application.name=test spring.datasource.url=@spring.datasource.url@ spring.datasource.username=@spring.datasource.username@ spring.datasource.password=@spring.datasource.password@ spring.datasource.driver-class-name=com.mysql.jdbc.Driver # Number of ms to wait before throwing an exception if no connection is available. spring.datasource.max-wait=10000 # Maximum number of active connections that can be allocated from this pool at the same time. spring.datasource.max-active=50 # Server port server.port=${port:9121} #Whether subclass-based (CGLIB) proxies are to be #created (true) as opposed to standard Java interface-based proxies (false). spring.aop.proxy-target-class=true # Validate the connection before borrowing it from the pool. spring.datasource.test-on-borrow=true #spring.datasource.validationQuery=SELECT 1
-
- 配置MyBatis
-
pom.xml
引入依賴
<!-- MyBatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>${mybatis-spring-boot-starter.version}</version> </dependency>
-
application.properties
配置MyBatis
# Mybatis mybatis.mapper-locations=classpath:mapper/*Mapper.xml mybatis.type-aliases-package=com.ranhan.model mybatis.configuration.mapUnderscoreToCamelCase=true mybatis.configuration.useColumnLabel=true
- 程序入口添加掃描實體注解(ComplaintApplication.java)
@SpringBootApplication @MapperScan(basePackages = "com.ranhan.dao")
-
- 項目最終結(jié)構(gòu)
├─src
│ ├─main
│ │ ├─java
│ │ │ └─com
│ │ │ └─ranhan
│ │ │ │ ComplaintApplication.java
│ │ │ │
│ │ │ ├─config
│ │ │ │ MyBatisConfig.java
│ │ │ │ TokenInterceptor.java
│ │ │ │ WebConfig.java
│ │ │ │
│ │ │ ├─controller
│ │ │ │ ComplaintController.java
│ │ │ │
│ │ │ ├─dao
│ │ │ │ ComplaintMapper.java
│ │ │ │
│ │ │ ├─domain
│ │ │ │ IdsVo.java
│ │ │ │ ReturnBase.java
│ │ │ │ ServiceException.java
│ │ │ │ UserException.java
│ │ │ │
│ │ │ ├─enums
│ │ │ │ ComplaintFromEnum.java
│ │ │ │ ComplaintStateEnum.java
│ │ │ │ ComplaintTypeEnum.java
│ │ │ │
│ │ │ ├─model
│ │ │ │ Complaint.java
│ │ │ │ ComplaintExample.java
│ │ │ │
│ │ │ └─service
│ │ │ │ ComplaintService.java
│ │ │ │ LoginService.java
│ │ │ │ OrderService.java
│ │ │ │
│ │ │ └─impl
│ │ │ ComplaintServiceImpl.java
│ │ │ LoginServiceImpl.java
│ │ │ OrderServiceImpl.java
│ │ │
│ │ └─resources
│ │ │ application-dev.properties
│ │ │ application-prod.properties
│ │ │ application-test.properties
│ │ │ application.properties
│ │ │ logback-spring.xml
│ │ │
│ │ └─mapper
│ │ ComplaintMapper.xml
│ │
│ └─test
│ └─java