示例需求

在Springboot2框架中,使用Mysql和Mybatis功能:
1. Mysql+Datasource集成
2. Mybatis+XML用法详解

数据库准备

采用了Oracle中的scott用户下的四张表,迁移至MySQL下,详见MySQL中建立Oracle中SCOTT数据示例

创建示例工程

本工程代码采用idea进行构建

1、新建工程

2、 创建工程时,直接勾选所需依赖

3、工程创建完毕后,删除无用文件

4、手动添加额外依赖,配置pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.6.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.lock</groupId>
<artifactId>smartmis-scott</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>smartmis-scott</name>
<description>SmartMIS for Scott</description> <properties>
<java.version>1.8</java.version>
</properties> <dependencies>
<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>2.0.1</version>
</dependency> <dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
<version>5.1.46</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.42</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> </project>

注意:手动修改一下mysql驱动的版本,默认版本比较高,应用时可能会有错误;我这里手动指定为5.1.46版本。

5、修改原application.properties为application.yml,并做如下配置

spring:
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/scott?useUnicode=true&autoReconnect=true&allowMultiQueries=true&useSSL=false
username: root
password: ****
server:
port: 8686
mybatis:
config-location: classpath:mybatis-config.xml

6、resources目录下新增mybatis-config.xml配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<package name="com.lock"/>
</typeAliases>
<mappers>
<mapper resource="mybatis/mapper/DeptMapper.xml"/>
<mapper resource="mybatis/mapper/EmpMapper.xml"/>
<mapper resource="mybatis/mapper/SalgradeMapper.xml"/>
<mapper resource="mybatis/mapper/BonusMapper.xml"/>
</mappers>
</configuration>

对应DeptMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.lock.smartmis.business.dao.DeptDao"> <select id="getAllDepts" resultType="com.lock.smartmis.business.vo.DeptVo">
select * from dept
</select> <select id="getDeptByNo" resultType="com.lock.smartmis.business.vo.DeptVo">
select * from dept where deptno = #{deptNo}
</select> </mapper>

7、建立bo类(以Dept类为例),并以此为基础建立vo类

package com.lock.smartmis.business.bean;

import java.io.Serializable;

public class Dept implements Serializable {

    private static final long serialVersionUID = 1L;

    private long deptNo;

    private String dName;

    private String loc;

    public long getDeptNo() {
return deptNo;
} public void setDeptNo(long deptNo) {
this.deptNo = deptNo;
} public String getdName() {
return dName;
} public void setdName(String dName) {
this.dName = dName;
} public String getLoc() {
return loc;
} public void setLoc(String loc) {
this.loc = loc;
} @Override
public String toString(){
return getDeptNo() + "," + getdName() + "," + getLoc();
}
}
package com.lock.smartmis.business.vo;

import com.lock.smartmis.business.bean.Dept;

public class DeptVo extends Dept{

    private static final long serialVersionUID = 1L;

}

8、Dao层接口及其实现

package com.lock.smartmis.business.dao;

import com.lock.smartmis.business.vo.DeptVo;

import java.util.List;

public interface DeptDao {

    public List<DeptVo> getAllDepts();

    public DeptVo getDeptByNo(Long id);
}
package com.lock.smartmis.business.dao.impl;

import com.lock.smartmis.business.dao.DeptDao;
import com.lock.smartmis.business.vo.DeptVo;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import java.util.List; @Component
public class DeptDaoimpl implements DeptDao { @Autowired
public SqlSessionTemplate sqlSessionTemplate; @Override
public List<DeptVo> getAllDepts() {
return this.sqlSessionTemplate.selectList("getAllDepts");
} @Override
public DeptVo getDeptByNo(Long deptNo) {
return this.sqlSessionTemplate.selectOne("getDeptByNo", deptNo);
}
}

9、Service层

package com.lock.smartmis.business.service;

import com.lock.smartmis.business.vo.DeptVo;

import java.util.List;

public interface DeptService {

    public List<DeptVo> getAllDepts();

    public DeptVo getDeptByNo(Long deptNo);
}
package com.lock.smartmis.business.service.impl;

import com.lock.smartmis.business.dao.DeptDao;
import com.lock.smartmis.business.service.DeptService;
import com.lock.smartmis.business.vo.DeptVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import java.util.List; @Service
public class DeptServiceImpl implements DeptService { @Autowired
private DeptDao deptDao; @Override
public List<DeptVo> getAllDepts() {
return this.deptDao.getAllDepts();
} @Override
public DeptVo getDeptByNo(Long deptNo) {
return this.deptDao.getDeptByNo(deptNo);
}
}

10、Controller层

package com.lock.smartmis.business.controller;

import com.lock.smartmis.business.service.DeptService;
import com.lock.smartmis.business.util.JsonResult;
import com.lock.smartmis.business.util.ResultCode;
import com.lock.smartmis.business.vo.DeptVo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController
@RequestMapping("/restapi")
public class ScottController { protected static Logger logger = LoggerFactory.getLogger(ScottController.class); @Autowired
private DeptService deptService; @GetMapping("/test")
public String test() {
return "API接口测试";
} @GetMapping("/depts")
public JsonResult getAllDepts(){
List<DeptVo> list = this.deptService.getAllDepts();
return new JsonResult(ResultCode.SUCCESS, list);
} @GetMapping("/dept/{deptNo}")
public JsonResult getDeptByNo(@PathVariable("deptNo") Long deptNo){
DeptVo deptVo = this.deptService.getDeptByNo(deptNo);
return new JsonResult(ResultCode.SUCCESS, deptVo);
}
}

10、项目运行起来,测试一下接口

~

SpringBoot示例教程(一)MySQL与Mybatis基础用法的更多相关文章

  1. (二、下) springBoot 、maven 、mysql、 mybatis、 通用Mapper、lombok 简单搭建例子 《附项目源码》

    接着上篇文章中 继续前进. 一.在maven 的pom.xm中添加组件依赖, mybatis通用Mapper,及分页插件 1.mybatis通用Mapper <!-- mybatis通用Mapp ...

  2. MyBatis基础用法(一)

    <select id="getErrorTimes" resultType="Integer"> SELECT ErrorTimes FROM `e ...

  3. SpringBoot图文教程「概念+案例 思维导图」「基础篇上」

    有天上飞的概念,就要有落地的实现 概念+代码实现是本文的特点,教程将涵盖完整的图文教程,代码案例 每个知识点配套自测面试题,学完技术自我测试 本文初学向,所以希望文中所有的代码案例都能敲一遍 大哥大姐 ...

  4. SpringBoot进阶教程 | 第四篇:整合Mybatis实现多数据源

    这篇文章主要介绍,通过Spring Boot整合Mybatis后如何实现在一个工程中实现多数据源.同时可实现读写分离. 准备工作 环境: windows jdk 8 maven 3.0 IDEA 创建 ...

  5. SpringBoot系列教程JPA之query使用姿势详解之基础篇

    前面的几篇文章分别介绍了CURD中的增删改,接下来进入最最常见的查询篇,看一下使用jpa进行db的记录查询时,可以怎么玩 本篇将介绍一些基础的查询使用姿势,主要包括根据字段查询,and/or/in/l ...

  6. (转)SpringBoot非官方教程 | 第三篇:SpringBoot用JdbcTemplates访问Mysql

    本文介绍springboot通过jdbc访问关系型MySQL,通过spring的JdbcTemplate去访问. 准备工作 jdk 1.8 maven 3.0 idea mysql 初始化mysql: ...

  7. .NET 5/.NET Core使用EF Core 5连接MySQL数据库写入/读取数据示例教程

    本文首发于<.NET 5/.NET Core使用EF Core 5(Entity Framework Core)连接MySQL数据库写入/读取数据示例教程> 前言 在.NET Core/. ...

  8. SpringBoot图文教程8 — SpringBoot集成MBG「代码生成器」

    有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+ ...

  9. mybatis基础系列(二)——基础语法、别名、输入映射、输出映射

    增删改查 mapper根节点及其子节点 mybatis框架需要读取映射文件创建会话工厂,映射文件是以<mapper>作为根节点,在根节点中支持9个元素,分别为insert.update.d ...

随机推荐

  1. loadrunner:传json

    loadrunner传k-v,用web_custom_request函数. init里面执行登录,根据返回获取到tokenId,action中,执行登录后的操作. 详细脚本如下: vuser_init ...

  2. iis站点设置错误页面返回http状态码为404而不是302或其他

    今天一位客户说网站错误页面返回的状态码是302而不是404,问ytkah要如何处理.这个应该是设置没有正确的原因.我们一步步来排查一下.1.首先打开iis管理器,左侧选择具体的站点,在右侧窗口中点击4 ...

  3. 硬币游戏2&&Cutting Game——Grundy值

    Grundy值 当前状态的Grundy值就是除任意一步所能转移到的状态的Grundy值以外的最小非负整数, 以硬币问题一为例,可写成: int init_grundy() { sg[] = ; ;i ...

  4. ES6学习笔记--属性名表达式

    1.直接用标识符作为属性名: obj.foo = true 2.用表达式作为属性名: obj['a'+'bc'] = 123 //相当于 obj['abc'] = 123 3.ES6 允许字面量定义对 ...

  5. (尚029)Vue_案例_交互footer组件功能

    需要实现界面截图: 难点分析:sAllCheck必须定义为计算属性 1.想到问题: 一旦写一个组件,需要接收哪些属性?? 因为只有属性确定了,标签才好写 todos属性可以确定三个方面的显示 2.做交 ...

  6. OKR失败的五个关键因素

    OKR是近年来的一个热点话题,这种目标管理法在谷歌体现了它非凡的价值,也因此被Facebook.Linkedin等公司所引用.从实践成功的案例看来,OKR确实是一种可以明确公司目标.促进公司发展的有价 ...

  7. Odds calculation required for the python strategy library

    Bet Class class strats.Bet(inp)[source] Here is an example of the expected string input on instantia ...

  8. 计蒜客 41387.XKC's basketball team-线段树(区间查找大于等于x的最靠右的位置) (The Preliminary Contest for ICPC Asia Xuzhou 2019 E.) 2019年徐州网络赛

    XKC's basketball team XKC , the captain of the basketball team , is directing a train of nn team mem ...

  9. TCP/IP协议族基本知识

    常见的网络拓扑 两台主机通信的过程:应用进程产生消息,经由主机的 TCP/IP 协议栈发送到局域网(LAN),最后经过广域网(目前最大的广域网的因特网)中的网络设备(路由器)传给目的主机所在的局域网( ...

  10. RAdam VS Adam

    论文解读:Radam:ON THE VARIANCE OF THE ADAPTIVE LEARNING RATE AND BEYOND 1,目的 想找到一个比较好的优化器,能够在收敛速度和收敛的效果上 ...