示例需求

在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. wordpress去掉category的另一个方法

    今天ytkah的客户问wordpress网站一直去不掉分类url中的/category/,他说已经按ytkah之前的方法设置了还是不起作用,进入网站后台发现,他们的网站有安装yoast,然后就大概知道 ...

  2. Excel——读取文件后——组装成待插入数据库数据——实体映射模式

    package com.it.excel.excelLearn; import java.io.IOException; import java.util.HashMap; import java.u ...

  3. Linux正则表达式与通配符

    在linux中,有通配符和正则表达式,这是两个不同的概念通配符:它是由shell解析,并且一般用于匹配文件名.如:ls正则表达式:是一个字符匹配标准,可以匹配文本中的内容一些命令工具按此标准实现字符匹 ...

  4. CF1102D-Balanced Ternary String-(贪心)

    http://codeforces.com/problemset/problem/1102/D 题意: 有n个字符,只能为012,现要通过变换让012的数量相等,并且使字典序最小. 解题: 由样例可以 ...

  5. 爬虫 -- UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe6 in position 301: unexpected end of data

     errors参数有3个值:strict,  ignore,  replace html.decode("utf-8"),这种形式有时会报错,那么修改为下面形式,将decode函数 ...

  6. .net core 原生支持grpc

    文章转自:https://grpc.io/blog/grpc-on-dotnetcore This is a guest post by Sourabh Shirhatti, a Program Ma ...

  7. Cronicle 基于nodejs 的分布式任务调度工具

    Cronicle 是一款不多的分布式任务调度工具,基于nodejs 开发,同时包含看web UI,从官方介绍看到的UI还是 挺不错的,而且功能很丰富,值得试用下 参考资料 http://cronicl ...

  8. [RN] React Navigation 使用中遇到的显示 问题 汇总

    React Navigation 使用中遇到的显示 问题 汇总 https://www.jianshu.com/p/8b1f18affc5d

  9. type of的返回值有哪些

    typeof 10; // number typeof 'time'; //string typeof undefined; // undefined typeof null; // object t ...

  10. A*G#C001

    AGC001 A BBQ Easy 贪心. https://agc001.contest.atcoder.jp/submissions/7856034 B Mysterious Light 很nb这个 ...