Springboot & Mybatis 構建restful 服務


Springboot & Mybatis 構建restful 服務一

1 前置條件

  • jdk測試:java -version

  • maven測試:命令行之行mvn -v

  • eclipse及maven插件

2 Springboot

1)創建maven項目:

eclipse:new -> project -> maven project

 選擇:Create a simple project(skip archetype selection)

(假設項目名為com.serena.AccountBalance)

2)修改pom:

      <!-- 新增 -->
      <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.4.1.RELEASE</version>
      </parent> 
      <dependencies>
        <!-- 新增spring boot依賴 -->
        <dependency>
           <groupId>org.springframework.boot</groupId>
           <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
      </dependencies>

3)下載數據庫驅動包(此例使用的是 Oracle 數據庫,由於 Oracle 版權問題,所以需下載驅動jar包):

去 Oracle 官網下載 jdbc驅動ojdbc6-1.0.1.jar

在終端執行下列命令
    mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=1.0.1 -Dpackaging=jar -Dfile=ojdbc6.jar

在eclipse中選中當前工程

maven -> update project...

4)在項目目錄下分別創建:

(此例中為:main/java/com/serena)

 
    — controller      //接口層
    — servcie           //業務層
     — impl
    — mapper          //數據操作層
    — entity            //數據持久化層

5)在項目目錄下新建啟動類 App.java:

(此例中為:main/java/com/serena)

    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;   
    @SpringBootApplication
    public class App {
        public static void main(String[] args) {
         SpringApplication.run(App.class, args);
        }
    }
 

6)代碼:編寫controller和service代碼

創建service/ISY.java,內容如下:

package com.serena.service;
import java.util.List;
import com.serena.entity.SettleAccount;
public interface ISY {
 
               
    // 通過賬戶 id(主鍵)查找賬戶
    SettleAccount selectByAccountCode(String accountCode);
    // 查找所有賬戶
    List<SettleAccount> selectAccounts();
}

創建 controller/SY.java,內容如下:

package com.serena.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import com.serena.entity.SettleAccount;
import com.serena.service.ISY;
@RestController
public class SY {
    @Autowired
    private ISY iSY;
// 通過用戶 id 來查找用戶余額
// 使用 get 請求傳遞參數
    @RequestMapping(value="/account/{accountCode}",method = RequestMethod.GET)
    public SettleAccount selectByAccountCode(@PathVariable("accountCode")String accountCode){
    SettleAccount settleAccount  = iSY.selectByAccountCode(accountCode);
         return settleAccount;
    } 
  // 查找所有 account 的余額
    @RequestMapping(value="/accounts",method = RequestMethod.GET)
    public List<SettleAccount> selectAccounts(){
        List<SettleAccount> list = null;
        list = iSY.selectAccounts();
        return list;
    }
}
 

編寫service/impl/SYService.java

package com.serena.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.serena.entity.SettleAccount;
import com.serena.mapper.SettleAccountMapper;
import com.serena.service.ISY;
@Service
public class SYService implements ISY{
    @Autowired
    private SettleAccountMapper settleAccountMapper;
    @Override
    public SettleAccount selectByAccountCode(String accountCode) {
        SettleAccount settleAccount = null;
        settleAccount = settleAccountMapper.selectByPrimaryKey(accountCode);
        return settleAccount;
    } 
    @Override
    public List<SettleAccount> selectAccounts() {
        List<SettleAccount> list = null;
        list = settleAccountMapper.selectAccounts();
        return list;
    }
}

3 Mybatis generator

1)修改pom:

新增依賴

    <!-- Spring Boot 集成MyBatis -->
     <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>1.1.1</version>
    </dependency>
<!-- 實體映射 -->
    <dependency>
     <groupId>com.datastax.cassandra</groupId>
     <artifactId>cassandra-driver-mapping</artifactId>
    </dependency>
   <!-- mysql 數據庫連接 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.6</version>
    </dependency>
    
  <!-- oracle 數據庫連接 -->
    <dependency>
     <groupId>com.oracle</groupId>
     <artifactId>ojdbc6</artifactId>
     <version>1.0.1</version>
     <scope>runtime</scope>
    </dependency>
 
新增自動生成 mapper 和 entity 插件 plugin
   <!-- mybatis generator 插件 -->
        <plugin> 
         <groupId>org.mybatis.generator</groupId> 
         <artifactId>mybatis-generator-maven-plugin</artifactId> 
         <version>1.3.5</version> 
            <configuration>  
                <verbose>true</verbose>  
                <overwrite>true</overwrite>  
            </configuration>  
        </plugin> 
 

2)創建配置文件: src/main/resources/generatorConfig.xml

中文標注的地方需自定義!!!

 
<!DOCTYPE generatorConfiguration 
  PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
    <classPathEntry location="安裝的 Oracle 驅動包的倉庫jar文件位置" />
          <context id="OracleTables" targetRuntime="MyBatis3">
    <commentGenerator>
        <property name="suppressAllComments" value="true"/>
    </commentGenerator>
     <jdbcConnection driverClass="驅動類"
        connectionURL="數據庫URL地址"
        userId="用戶名"     password="密碼">
    </jdbcConnection>
  <javaTypeResolver>
     <property name="forceBigDecimals" value="false"/>
  </javaTypeResolver>
  <javaModelGenerator targetPackage="com.serena.entity" targetProject="src/main/java">
      <property name="enableSubPackages" value="false"/>
      <property name="trimStrings" value="true"/>
  </javaModelGenerator>
  <sqlMapGenerator targetPackage="com.serena.mapper" targetProject="src/main/java">
       <property name="enableSubPackages" value="false"/>
  </sqlMapGenerator>
  <javaClientGenerator type="XMLMAPPER" targetPackage="com.serena.mapper" targetProject="src/main/java">
    <property name="enableSubPackages" value="false"/>
  </javaClientGenerator>
  <!-- 例: 查詢的表名:SETTLEACCOUNT
           自定義的實體類名稱:SettleAccount
        -->
  <table  tableName="SETTLEACCOUNT" domainObjectName="自定義的實體類名稱"  enableCountByExample="false" enableSelectByExample="false" enableUpdateByExample="false" enableDeleteByExample="false">
  </table>
</context>
</generatorConfiguration>
 

3) 執行:maven build: mybatis-generator:generate

4. Mybatis

1) 在所有mapper類中的接口聲明前增加 @Mapper

添加@Mapper

@Mapper
public interface SettleAccountMapper {
  //some code
}

2)刪除entity 里SettleAccount多余的屬性和 setter,getter 方法,只保留 ACCOUNTCODE, CUSTOMERCODE, ACCOUNTNAME, SMSNUM

3)在SettleAccountMapper.xml中執行下列操作:

// 添加
<select id="selectAccounts"  resultMap="BaseResultMap">
    select 
    <include refid="Base_Column_List" />
    from SETTLEACCOUNT
  </select>
// 修改 id為BaseResultMap的resultMap
 <resultMap id="BaseResultMap" type="com.serena.entity.SettleAccount">
    <id column="ACCOUNTCODE" jdbcType="VARCHAR" property="accountcode" />
    <result column="CUSTOMERCODE" jdbcType="VARCHAR" property="customercode" />
    <result column="ACCOUNTNAME" jdbcType="VARCHAR" property="accountname" />
    <result column="SMSNUM" jdbcType="DECIMAL" property="smsnum" />
  </resultMap>
// 修改id 為Base_Column_List的 sql
 <sql id="Base_Column_List">
    ACCOUNTCODE, CUSTOMERCODE, ACCOUNTNAME,  SMSNUM
  </sql>
 

修改SettleAccountMapper:

package com.serena.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import com.serena.entity.SettleAccount;
@Mapper
public interface SettleAccountMapper {
    // 抽象方法:通過賬戶編號查找賬戶
    SettleAccount selectByPrimaryKey(String accountcode);
    // 抽象方法:查找所有賬戶
    List<SettleAccount> selectAccounts();
}

4)編譯:maven build: clean compile

5)創建配置文件:src/main/java/resources/application.properties

// 服務器端口號
    server.port=8101
//  mapper映射地址
    mybatis.mapper-locations=classpath*:mapper/*Mapper.xml
//  數據庫URL地址
 spring.datasource.url=
// 登錄數據庫的用戶名
    spring.datasource.username=
//  密碼
    spring.datasource.password=
 

6)運行啟動類App.class

7)在iterm 中輸入如下指令測試:

 http localhost:8101/accounts
  
 http localhost:8101/account/U0001
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM