Java 實戰 spingboot-mybatis-mssql

這是一個用  springboot 框架 + mybatis + sqlserver 的實戰教程,廢話不多說,開擼。

  • 選擇已安裝的JDK,和 Spring Initializr

  • 填寫項目信息

這裏要說說 GroupId 和 Artifact 了,它是 Maven 管理項目的幾項元素

    GroupId :項目組,一般以公司名稱或者個人名稱來定義

    Artifact :項目名稱 或 者模塊名稱

   像我現在定義的:com.ncat.webdemo 

 前面的 com 叫做域,除了com,我們還會看到有的是 org 還有 cn開頭的

  • 修改項目名稱和代碼位置(我這裏就不修改了)

  • 接下來用到的幾個比較重要的目錄及文件

  • 方便起見,將 application.properties 後綴改爲 yml(看個人習慣)

  • 創建項目結構(主要文件夾與啓動類同級,否則啓動類不能掃描這些結構中的注入)

  • 簡單編寫 UserController 代碼,並配置 端口

 

 

OK,我們成功了一小步了,繼續加油!

 

  • pom.xml 文件配置依賴

 

這裏有一些小技巧,幫助我們正確引入依賴

  1. 當我們把依賴的配置複製到該節點下時,IDEA 右下角會彈出框,問你是否導入引用,當然要導入了,可以點擊後面的自動導入

 

2. 我們是否引入成功,可以按住 ctrl 鍵 並將鼠標左鍵放在 groupId 節點上,會有模塊的引入信息,並且點擊後跳轉到該模塊,說明我們引入成功了

  • application.yml 文件配置數據源

 

  • mybatis 自動生成 —— resources 文件夾下添加  generatorConfig.xml 文件內容如下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd" >
<generatorConfiguration>
    <!-- 數據庫驅動:選擇你的本地硬盤上面的數據庫驅動包-->
    <classPathEntry  location="D:\Java\sqljdbc_6.0\enu\jre8\sqljdbc42.jar"/>
    <context id="DB2Tables"  targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressDate" value="true"/>
            <!-- 是否去除自動生成的註釋 true:是 : false:否 -->
            <property name="suppressAllComments" value="false"/>
        </commentGenerator>
        <!--數據庫鏈接URL,用戶名、密碼 -->
        <jdbcConnection driverClass="com.microsoft.sqlserver.jdbc.SQLServerDriver" connectionURL="jdbc:sqlserver://IP:端口;DatabaseName=數據庫" userId="用戶名" password="密碼">
        </jdbcConnection>
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>
        <!-- 生成模型的包名和位置-->
        <javaModelGenerator targetPackage="main.java.com.ncat.webdemo.pojo" targetProject="src">
            <property name="enableSubPackages" value="true"/>
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>
        <!-- 生成映射文件的包名和位置-->
        <sqlMapGenerator targetPackage="main.resources.mapper" targetProject="src">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>
        <!-- 生成DAO的包名和位置-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="main.java.com.ncat.webdemo.dao" targetProject="src">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>
        <!-- 要生成的表 tableName是數據庫中的表名或視圖名 domainObjectName是實體類名-->
        <table tableName="User" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
    </context>
</generatorConfiguration>

 

  • mybatis 自動生成 —— 引入 mybatis 自動生成插件

  •  編輯自動生成配置

 

    mybatis-generator:generate -e
  • 運行自動生成

 

  •  實體層和Mapper層,以及 Mapper.xml 文件 生成完畢

 

  • 修改這兩個文件的命名空間,去掉前面的 main.java 與其他項目文件保持一致

 

  • 修改  resources/mapper 下 mybatis 自動生成的 UserMapper.xm 文件,去掉 文件裏所有命名空間的前綴 main.java

 

  • application.yml 中添加 mybatis 配置,作用是告訴 mapper.xml 文件 與 mapper 類 對應關係

 

  • 創建 UserService 服務層及 服務實現層 UserServiceImpl

 

代碼如下:

package com.ncat.webdemo.service;

import com.ncat.webdemo.pojo.User;

public interface UserService {
    User selectByPrimaryKey(Integer id);
}
package com.ncat.webdemo.serviceImpl;

import com.ncat.webdemo.dao.UserMapper;
import com.ncat.webdemo.pojo.User;
import com.ncat.webdemo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public User selectByPrimaryKey(Integer id) {
        return userMapper.selectByPrimaryKey(id);
    }
}

 

  •  修改 UserController 代碼

 代碼如下:

package com.ncat.webdemo.controller;

import com.ncat.webdemo.pojo.User;
import com.ncat.webdemo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping(value = {"user"})
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping(value = {"test"})
    public User Test(@RequestParam Integer id) {
        return userService.selectByPrimaryKey(id);
    }
}
  • 運行項目

 

哎呀,報錯啦......

 

排查了半個小時,最後發現 是我表名的問題,我的表名是:User 與數據庫關鍵字衝突了,在 UserMapper.xml  文件中給表加中括號

  •  再次運行項目,並瀏覽

 

 

 

OK,搞定。教訓:表名最好不要和數據庫關鍵字衝突了

 

 

 

 

系列文章

 


  

 

 

 

 

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