spring boot + mybatis完美整合

無意中發現了一個巨牛的人工智能教程,忍不住分享一下給大家。教程不僅是零基礎,通俗易懂,而且非常風趣幽默,像看小說一樣!覺得太牛了,所以分享給大家。點這裏可以跳轉到教程

這兩天啓動了一個新項目因爲項目組成員一直都使用的是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;">&lt;</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;">&gt;</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;">&lt;</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;">&gt;</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);">&lt;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);">&gt;</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);">&lt;/sql&gt;</span>

<span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);">&lt;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);">&gt;</span>
   SELECT 
   <span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);">&lt;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);">/&gt;</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);">&lt;/select&gt;</span>

<span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);">&lt;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);">&gt;</span>
    SELECT 
   <span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);">&lt;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);">/&gt;</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);">&lt;/select&gt;</span>

<span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);">&lt;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);">&gt;</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);">&lt;/insert&gt;</span>

<span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);">&lt;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);">&gt;</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);">&lt;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);">&gt;</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);">&lt;/if&gt;</span>
    <span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);">&lt;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);">&gt;</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);">&lt;/if&gt;</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);">&lt;/update&gt;</span>

<span class="nt" style="line-height:inherit;margin:0px;padding:0px;border-style:solid;border-width:0px;color:rgb(0,0,128);">&lt;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);">&gt;</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);">&lt;/delete&gt;</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;">&lt;</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;">&gt;</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、使用

使用和上個版本沒有任何區別,大家就看代碼吧

xml配置版本

如何選擇

兩種模式各有特點,註解版適合簡單快速的模式,其實像現在流行的這種微服務模式,一個微服務就會對應一個自已的數據庫,多表連接查詢的需求會大大的降低,會越來越適合這種模式。

老傳統模式比適合大型項目,可以靈活的動態生成SQL,方便調整SQL,也有痛痛快快,洋洋灑灑的寫SQL的感覺。

完整代碼地址


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章