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,搞定。教训:表名最好不要和数据库关键字冲突了

 

 

 

 

系列文章


  

 

 

 

 

posted @ 2019-08-29 20:39  NCat  阅读(1384)  评论(0编辑  收藏  举报