無意中發現了一個巨牛的人工智能教程,忍不住分享一下給大家。教程不僅是零基礎,通俗易懂,而且非常風趣幽默,像看小說一樣!覺得太牛了,所以分享給大家。點這裏可以跳轉到教程
這兩天啓動了一個新項目因爲項目組成員一直都使用的是mybatis,雖然個人比較喜歡jpa這種極簡的模式,但是爲了項目保持統一性技術選型還是定了 mybatis。到網上找了一下關於spring boot和mybatis組合的相關資料,各種各樣的形式都有,看的人心累,結合了mybatis的官方demo和文檔終於找到了最簡的兩種模式,花了一天時間總結後分享出來。
orm框架的本質是簡化編程中操作數據庫的編碼,發展到現在基本上就剩兩家了,一個是宣稱可以不用寫一句SQL的hibernate,一個是可以靈活調試動態sql的mybatis,兩者各有特點,在企業級系統開發中可以根據需求靈活使用。發現一個有趣的現象:傳統企業大都喜歡使用hibernate,互聯網行業通常使用mybatis。
hibernate特點就是所有的sql都用Java代碼來生成,不用跳出程序去寫(看)sql,有着編程的完整性,發展到最頂端就是spring data jpa這種模式了,基本上根據方法名就可以生成對應的sql了,有不太瞭解的可以看我的上篇文章springboot(五):spring data jpa的使用。
mybatis初期使用比較麻煩,需要各種配置文件、實體類、dao層映射關聯、還有一大推其它配置。當然mybatis也發現了這種弊端,初期開發了generator可以根據表結果自動生產實體類、配置文件和dao層代碼,可以減輕一部分開發量;後期也進行了大量的優化可以使用註解了,自動管理dao層和配置文件等,發展到最頂端就是今天要講的這種模式了,mybatis-spring-boot-starter就是springboot+mybatis可以完全註解不用配置文件,也可以簡單配置輕鬆上手。
現在想想spring boot 就是牛逼呀,任何東西只要關聯到spring boot都是化繁爲簡。
mybatis-spring-boot-starter
官方說明:MyBatis Spring-Boot-Starter will help you use MyBatis with Spring Boot
其實就是myBatis看spring boot這麼火熱也開發出一套解決方案來湊湊熱鬧,但這一湊確實解決了很多問題,使用起來確實順暢了許多。mybatis-spring-boot-starter主要有兩種解決方案,一種是使用註解解決一切問題,一種是簡化後的老傳統。
當然任何模式都需要首先引入mybatis-spring-boot-starter的pom文件,現在最新版本是1.1.1(剛好快到雙11了 :)
)
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.1.1</version> </dependency>
好了下來分別介紹兩種開發模式
無配置文件註解版
就是一切使用註解搞定。
1 添加相關maven文件
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> </dependencies>
完整的pom包這裏就不貼了,大家直接看源碼
2、application.properties
添加相關配置
mybatis.type-aliases-package=com.neo.entity
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.url = jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=utf-8
spring.datasource.username = root
spring.datasource.password = root
springboot會自動加載spring.datasource.*相關配置,數據源就會自動注入到sqlSessionFactory中,sqlSessionFactory會自動注入到Mapper中,對了你一切都不用管了,直接拿起來使用就行了。
在啓動類中添加對mapper包掃描@MapperScan
@SpringBootApplication @MapperScan("com.neo.mapper") public class Application {<span class="kd" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">public</span> <span class="kd" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">static</span> <span class="kt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(68,85,136);font-weight:bold;">void</span> <span class="nf" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(153,0,0);font-weight:bold;">main</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">(</span><span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">String</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">[]</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">args</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">)</span> <span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">{</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">SpringApplication</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">.</span><span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">run</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">(</span><span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">Application</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">.</span><span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">class</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">,</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">args</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">);</span> <span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">}</span>
}
或者直接在Mapper類上面添加註解@Mapper
,建議使用上面那種,不然每個mapper加個註解也挺麻煩的
3、開發Mapper
第三步是最關鍵的一塊,sql生產都在這裏
public interface UserMapper {<span class="nd" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">@Select</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">(</span><span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"SELECT * FROM users"</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">)</span> <span class="nd" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">@Results</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">({</span> <span class="nd" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">@Result</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">(</span><span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">property</span> <span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">=</span> <span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"userSex"</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">,</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">column</span> <span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">=</span> <span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"user_sex"</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">,</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">javaType</span> <span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">=</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">UserSexEnum</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">.</span><span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">class</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">),</span> <span class="nd" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">@Result</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">(</span><span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">property</span> <span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">=</span> <span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"nickName"</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">,</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">column</span> <span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">=</span> <span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"nick_name"</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">)</span> <span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">})</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">List</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;"><</span><span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">UserEntity</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">></span> <span class="nf" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(153,0,0);font-weight:bold;">getAll</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">();</span> <span class="nd" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">@Select</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">(</span><span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"SELECT * FROM users WHERE id = #{id}"</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">)</span> <span class="nd" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">@Results</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">({</span> <span class="nd" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">@Result</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">(</span><span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">property</span> <span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">=</span> <span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"userSex"</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">,</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">column</span> <span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">=</span> <span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"user_sex"</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">,</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">javaType</span> <span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">=</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">UserSexEnum</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">.</span><span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">class</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">),</span> <span class="nd" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">@Result</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">(</span><span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">property</span> <span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">=</span> <span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"nickName"</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">,</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">column</span> <span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">=</span> <span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"nick_name"</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">)</span> <span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">})</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">UserEntity</span> <span class="nf" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(153,0,0);font-weight:bold;">getOne</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">(</span><span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">Long</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">id</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">);</span> <span class="nd" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">@Insert</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">(</span><span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"INSERT INTO users(userName,passWord,user_sex) VALUES(#{userName}, #{passWord}, #{userSex})"</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">)</span> <span class="kt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(68,85,136);font-weight:bold;">void</span> <span class="nf" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(153,0,0);font-weight:bold;">insert</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">(</span><span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">UserEntity</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">user</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">);</span> <span class="nd" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">@Update</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">(</span><span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"UPDATE users SET userName=#{userName},nick_name=#{nickName} WHERE id =#{id}"</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">)</span> <span class="kt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(68,85,136);font-weight:bold;">void</span> <span class="nf" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(153,0,0);font-weight:bold;">update</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">(</span><span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">UserEntity</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">user</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">);</span> <span class="nd" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">@Delete</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">(</span><span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"DELETE FROM users WHERE id =#{id}"</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">)</span> <span class="kt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(68,85,136);font-weight:bold;">void</span> <span class="nf" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(153,0,0);font-weight:bold;">delete</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">(</span><span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">Long</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">id</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">);</span>
}
爲了更接近生產我特地將user_sex、nick_name兩個屬性在數據庫加了下劃線和實體類屬性名不一致,另外user_sex使用了枚舉
- @Select 是查詢類的註解,所有的查詢均使用這個
- @Result 修飾返回的結果集,關聯實體類屬性和數據庫字段一一對應,如果實體類屬性和數據庫屬性名保持一致,就不需要這個屬性來修飾。
- @Insert 插入數據庫使用,直接傳入實體類會自動解析屬性到對應的值
- @Update 負責修改,也可以直接傳入對象
- @delete 負責刪除
注意,使用#符號和$符號的不同:
// This example creates a prepared statement, something like select * from teacher where name = ?; @Select("Select * from teacher where name = #{name}") Teacher selectTeachForGivenName(@Param("name") String name);
// This example creates n inlined statement, something like select * from teacher where name = ‘someName’;
@Select(“Select * from teacher where name = ‘${name}’”)
Teacher selectTeachForGivenName(@Param(“name”) String name);
4、使用
上面三步就基本完成了相關dao層開發,使用的時候當作普通的類注入進入就可以了
@RunWith(SpringRunner.class) @SpringBootTest public class UserMapperTest {<span class="nd" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">@Autowired</span> <span class="kd" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">private</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">UserMapper</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">UserMapper</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">;</span> <span class="nd" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">@Test</span> <span class="kd" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">public</span> <span class="kt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(68,85,136);font-weight:bold;">void</span> <span class="nf" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(153,0,0);font-weight:bold;">testInsert</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">()</span> <span class="kd" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">throws</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">Exception</span> <span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">{</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">UserMapper</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">.</span><span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">insert</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">(</span><span class="k" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">new</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">UserEntity</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">(</span><span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"aa"</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">,</span> <span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"a123456"</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">,</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">UserSexEnum</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">.</span><span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">MAN</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">));</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">UserMapper</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">.</span><span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">insert</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">(</span><span class="k" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">new</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">UserEntity</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">(</span><span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"bb"</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">,</span> <span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"b123456"</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">,</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">UserSexEnum</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">.</span><span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">WOMAN</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">));</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">UserMapper</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">.</span><span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">insert</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">(</span><span class="k" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">new</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">UserEntity</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">(</span><span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"cc"</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">,</span> <span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"b123456"</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">,</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">UserSexEnum</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">.</span><span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">WOMAN</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">));</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">Assert</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">.</span><span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">assertEquals</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">(</span><span class="mi" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,153,153);">3</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">,</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">UserMapper</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">.</span><span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">getAll</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">().</span><span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">size</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">());</span> <span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">}</span> <span class="nd" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">@Test</span> <span class="kd" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">public</span> <span class="kt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(68,85,136);font-weight:bold;">void</span> <span class="nf" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(153,0,0);font-weight:bold;">testQuery</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">()</span> <span class="kd" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">throws</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">Exception</span> <span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">{</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">List</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;"><</span><span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">UserEntity</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">></span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">users</span> <span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">=</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">UserMapper</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">.</span><span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">getAll</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">();</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">System</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">.</span><span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">out</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">.</span><span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">println</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">(</span><span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">users</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">.</span><span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">toString</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">());</span> <span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">}</span> <span class="nd" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">@Test</span> <span class="kd" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">public</span> <span class="kt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(68,85,136);font-weight:bold;">void</span> <span class="nf" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(153,0,0);font-weight:bold;">testUpdate</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">()</span> <span class="kd" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">throws</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">Exception</span> <span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">{</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">UserEntity</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">user</span> <span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">=</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">UserMapper</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">.</span><span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">getOne</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">(</span><span class="mi" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,153,153);">3</span><span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">l</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">);</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">System</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">.</span><span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">out</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">.</span><span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">println</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">(</span><span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">user</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">.</span><span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">toString</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">());</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">user</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">.</span><span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">setNickName</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">(</span><span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"neo"</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">);</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">UserMapper</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">.</span><span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">update</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">(</span><span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">user</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">);</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">Assert</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">.</span><span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">assertTrue</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">((</span><span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"neo"</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">.</span><span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">equals</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">(</span><span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">UserMapper</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">.</span><span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">getOne</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">(</span><span class="mi" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,153,153);">3</span><span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">l</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">).</span><span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">getNickName</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">())));</span> <span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">}</span>
}
源碼中controler層有完整的增刪改查,這裏就不貼了
源碼在這裏spring-boot-mybatis-annotation
極簡xml版本
極簡xml版本保持映射文件的老傳統,優化主要體現在不需要實現dao的是實現層,系統會自動根據方法名在映射文件中找對應的sql.
1、配置
pom文件和上個版本一樣,只是application.properties
新增以下配置
mybatis.config-locations=classpath:mybatis/mybatis-config.xml mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
指定了mybatis基礎配置文件和實體類映射文件的地址
mybatis-config.xml 配置
<configuration> <typeAliases> <typeAlias alias="Integer" type="java.lang.Integer" /> <typeAlias alias="Long" type="java.lang.Long" /> <typeAlias alias="HashMap" type="java.util.HashMap" /> <typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap" /> <typeAlias alias="ArrayList" type="java.util.ArrayList" /> <typeAlias alias="LinkedList" type="java.util.LinkedList" /> </typeAliases> </configuration>
這裏也可以添加一些mybatis基礎的配置
2、添加User的映射文件
<mapper namespace="com.neo.mapper.UserMapper" > <resultMap id="BaseResultMap" type="com.neo.entity.UserEntity" > <id column="id" property="id" jdbcType="BIGINT" /> <result column="userName" property="userName" jdbcType="VARCHAR" /> <result column="passWord" property="passWord" jdbcType="VARCHAR" /> <result column="user_sex" property="userSex" javaType="com.neo.enums.UserSexEnum"/> <result column="nick_name" property="nickName" jdbcType="VARCHAR" /> </resultMap><span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);"><sql</span> <span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">id=</span><span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"Base_Column_List"</span> <span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);">></span> id, userName, passWord, user_sex, nick_name <span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);"></sql></span> <span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);"><select</span> <span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">id=</span><span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"getAll"</span> <span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">resultMap=</span><span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"BaseResultMap"</span> <span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);">></span> SELECT <span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);"><include</span> <span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">refid=</span><span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"Base_Column_List"</span> <span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);">/></span> FROM users <span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);"></select></span> <span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);"><select</span> <span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">id=</span><span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"getOne"</span> <span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">parameterType=</span><span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"java.lang.Long"</span> <span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">resultMap=</span><span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"BaseResultMap"</span> <span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);">></span> SELECT <span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);"><include</span> <span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">refid=</span><span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"Base_Column_List"</span> <span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);">/></span> FROM users WHERE id = #{id} <span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);"></select></span> <span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);"><insert</span> <span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">id=</span><span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"insert"</span> <span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">parameterType=</span><span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"com.neo.entity.UserEntity"</span> <span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);">></span> INSERT INTO users (userName,passWord,user_sex) VALUES (#{userName}, #{passWord}, #{userSex}) <span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);"></insert></span> <span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);"><update</span> <span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">id=</span><span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"update"</span> <span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">parameterType=</span><span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"com.neo.entity.UserEntity"</span> <span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);">></span> UPDATE users SET <span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);"><if</span> <span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">test=</span><span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"userName != null"</span><span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);">></span>userName = #{userName},<span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);"></if></span> <span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);"><if</span> <span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">test=</span><span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"passWord != null"</span><span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);">></span>passWord = #{passWord},<span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);"></if></span> nick_name = #{nickName} WHERE id = #{id} <span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);"></update></span> <span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);"><delete</span> <span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">id=</span><span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"delete"</span> <span class="na" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,128,128);">parameterType=</span><span class="s" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(221,17,68);">"java.lang.Long"</span> <span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);">></span> DELETE FROM users WHERE id =#{id} <span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);"></delete></span>
</mapper>
其實就是把上個版本中mapper的sql搬到了這裏的xml中了
3、編寫Dao層的代碼
public interface UserMapper {<span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">List</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;"><</span><span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">UserEntity</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">></span> <span class="nf" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(153,0,0);font-weight:bold;">getAll</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">();</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">UserEntity</span> <span class="nf" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(153,0,0);font-weight:bold;">getOne</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">(</span><span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">Long</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">id</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">);</span> <span class="kt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(68,85,136);font-weight:bold;">void</span> <span class="nf" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(153,0,0);font-weight:bold;">insert</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">(</span><span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">UserEntity</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">user</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">);</span> <span class="kt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(68,85,136);font-weight:bold;">void</span> <span class="nf" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(153,0,0);font-weight:bold;">update</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">(</span><span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">UserEntity</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">user</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">);</span> <span class="kt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(68,85,136);font-weight:bold;">void</span> <span class="nf" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(153,0,0);font-weight:bold;">delete</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">(</span><span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">Long</span> <span class="n" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;">id</span><span class="o" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,0);font-weight:bold;">);</span>
}
對比上一步這裏全部只剩了接口方法
4、使用
使用和上個版本沒有任何區別,大家就看代碼吧
如何選擇
兩種模式各有特點,註解版適合簡單快速的模式,其實像現在流行的這種微服務模式,一個微服務就會對應一個自已的數據庫,多表連接查詢的需求會大大的降低,會越來越適合這種模式。
老傳統模式比適合大型項目,可以靈活的動態生成SQL,方便調整SQL,也有痛痛快快,洋洋灑灑的寫SQL的感覺。