博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Boot入门(七):使用MyBatis访问MySql数据库(xml方式)
阅读量:5960 次
发布时间:2019-06-19

本文共 8002 字,大约阅读时间需要 26 分钟。

本系列博客带你一步一步的学习Spring Boot,如帮助到你,不胜荣幸,如有错误,欢迎指正!

本篇博客我们讲解下在Spring Boot中使用MyBatis访问MySql数据库(xml方式)的简单用法。

本系列其它文章如下所示:

1. 前期准备

假设你的机器已经安装好了MySql,我们先执行如下语句创建数据库和表:

CREATE DATABASE springbootaction_db;create table author(  author_id   int auto_increment comment '作者id' primary key,  author_name varchar(20) not null comment '姓名',  pen_name    varchar(20) not null comment '笔名')comment '作者';复制代码

2. 修改pom文件

pom文件引入mybatis的starter pom和mysql的驱动,因后面要编写控制器,因此也引入下阿里巴巴的fastjson:

org.mybatis.spring.boot
mybatis-spring-boot-starter
1.1.1
mysql
mysql-connector-java
5.1.35
com.alibaba
fastjson
1.2.47
复制代码

说明:引入了mybatis-spring-boot-starter后,可以不再引用spring-boot-starter-jdbc,因为前者已经依赖于后者。

3. 配置数据源

在resources/application.yml中配置数据源:

spring:  datasource:    driver-class-name: com.mysql.jdbc.Driver    url: jdbc:mysql://localhost:3306/springbootaction_db    username: root    password:复制代码

4. 修改配置文件

在application.yml中添加mybatis配置:

mybatis:  mapper-locations: classpath:mybatis/*.xml  type-aliases-package: com.zwwhnly.springbootaction.mybatis.entity复制代码

其中,mapper-locations为mybatis xml文件的路径,type-aliases-package为定义的实体所在的包名。

5. 定义数据库实体

定义数据库实体Author:

package com.zwwhnly.springbootaction.mybatis.entity;import com.alibaba.fastjson.annotation.JSONField;public class Author {    @JSONField(name = "author_id")    private Integer authorId;    @JSONField(name = "author_name")    private String authorName;    @JSONField(name = "pen_name")    private String penName;    public Integer getAuthorId() {        return authorId;    }    public void setAuthorId(Integer authorId) {        this.authorId = authorId;    }    public String getAuthorName() {        return authorName;    }    public void setAuthorName(String authorName) {        this.authorName = authorName;    }    public String getPenName() {        return penName;    }    public void setPenName(String penName) {        this.penName = penName;    }}复制代码

6. 编写Dao层代码

定义接口AuthorMapperV2:

package com.zwwhnly.springbootaction.mybatis.xml;import com.zwwhnly.springbootaction.mybatis.entity.Author;import org.apache.ibatis.annotations.Mapper;import org.apache.ibatis.annotations.Param;import java.util.List;@Mapperpublic interface AuthorMapperV2 {    int add(@Param("author_name") String authorName, @Param("pen_name") String penName);    int update(@Param("author_name") String authorName, @Param("pen_name") String penName, @Param("id") Integer id);    int delete(Integer id);    Author findAuthor(@Param("id") Integer id);    List
findAuthorList();}复制代码

注意:接口要添加@Mapper注解。

7. 编写Service层代码

定义类AuthorServiceV2:

package com.zwwhnly.springbootaction.mybatis.xml;import com.zwwhnly.springbootaction.mybatis.entity.Author;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import java.util.List;@Servicepublic class AuthorServiceV2 {    @Autowired    private AuthorMapperV2 authorMapperV2;    public int add(String authorName, String penName) {        return this.authorMapperV2.add(authorName, penName);    }    public int update(String authorName, String penName, Integer id) {        return this.authorMapperV2.update(authorName, penName, id);    }    public int delete(Integer id) {        return this.authorMapperV2.delete(id);    }    public Author findAuthor(Integer id) {        return this.authorMapperV2.findAuthor(id);    }    public List
findAuthorList() { return this.authorMapperV2.findAuthorList(); }}复制代码

注意:类添加@Service注解。

8. 添加mybatis xml文件

在resources目录下,新建mybatis文件夹,然后新建AuthorMapper.xml文件,分别实现上面定义的新增,修改,删除,获取单个作者信息,获取作者列表功能:

INSERT INTO author(author_name, pen_name) VALUES(#{author_name}, #{pen_name});
UPDATE author SET author_name = #{author_name,jdbcType=VARCHAR}, pen_name = #{pen_name,jdbcType=VARCHAR} WHERE author_id = #{id,jdbcType=INTEGER};
DELETE FROM author WHERE author_id = #{id};
复制代码

9. 编写Controller代码

新建控制器AuthorControllerV2:

package com.zwwhnly.springbootaction.controller;import com.alibaba.fastjson.JSONObject;import com.zwwhnly.springbootaction.mybatis.entity.Author;import com.zwwhnly.springbootaction.mybatis.xml.AuthorServiceV2;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.*;import java.util.HashMap;import java.util.List;import java.util.Map;@RestController@RequestMapping(value = "/mybatis/author")public class AuthorControllerV2 {    @Autowired    private AuthorServiceV2 authorServiceV2;    /**     * 查询作者列表     */    @RequestMapping(value = "getAuthorListV2", method = RequestMethod.GET)    public Map
getAuthorList() { List
authorList = this.authorServiceV2.findAuthorList(); Map
param = new HashMap<>(); param.put("total", authorList.size()); param.put("rows", authorList); return param; } /** * 查询单个作者信息 */ @RequestMapping(value = "/getAuthorV2/{authorId:\\d+}", method = RequestMethod.GET) public Author getAuthor(@PathVariable Integer authorId) { Author author = this.authorServiceV2.findAuthor(authorId); if (author == null) { throw new RuntimeException("查询错误"); } return author; } /** * 新增 */ @RequestMapping(value = "addV2", method = RequestMethod.POST) public void add(@RequestBody JSONObject jsonObject) { String authorName = jsonObject.getString("authorName"); String penName = jsonObject.getString("penName"); try { this.authorServiceV2.add(authorName, penName); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException("新增错误"); } } /** * 更新 */ @RequestMapping(value = "/updateV2/{authorId:\\d+}", method = RequestMethod.PUT) public void update(@PathVariable Integer authorId, @RequestBody JSONObject jsonObject) { Author author = this.authorServiceV2.findAuthor(authorId); String authorName = jsonObject.getString("authorName"); String penName = jsonObject.getString("penName"); try { this.authorServiceV2.update(authorName, penName, author.getAuthorId()); } catch (Exception e) { e.printStackTrace(); throw new RuntimeException("更新错误"); } } /** * 删除 */ @RequestMapping(value = "/deleteV2/{authorId:\\d+}", method = RequestMethod.DELETE) public void delete(@PathVariable Integer authorId) { try { this.authorServiceV2.delete(authorId); } catch (Exception e) { throw new RuntimeException("删除错误"); } }}复制代码

10. 使用Postman验证

10.1 验证新增

因为新增是Post请求,因此这里我们使用下Postman工具:

调用完接口,发现数据库新增数据成功。

然后用同样的方法新增下鲁迅的信息。

10.2 验证更新

调用更新接口将鲁迅的名字从周作人修改为周树人:

调用完接口,发现数据库更新数据成功。

10.3 验证获取列表

在浏览器访问http://localhost:8080/mybatis/author/getAuthorListV2,返回数据如下:

{  "total": 2,  "rows": [    {      "authorId": 1,      "authorName": "王卫国",      "penName": "路遥"    },    {      "authorId": 2,      "authorName": "周树人",      "penName": "鲁迅"    }  ]}复制代码

10.4 验证获取单个数据

在浏览器访问http://localhost:8080/mybatis/author/getAuthorV2/1,返回如下数据:

{  "authorId": 1,  "authorName": "王卫国",  "penName": "路遥"}复制代码

10.5 验证删除

调用删除接口,将鲁迅的数据删除:

此时访问http://localhost:8080/mybatis/author/getAuthorListV2,返回数据只有1条了:

{  "total": 1,  "rows": [    {      "authorId": 1,      "authorName": "王卫国",      "penName": "路遥"    }  ]}复制代码

11. 源码

源码地址:,欢迎下载。

12. 参考

欢迎扫描下方二维码关注公众号:申城异乡人。

转载于:https://juejin.im/post/5d03604cf265da1b614ff4a1

你可能感兴趣的文章
mysql 日期和时间格式转换实现语句
查看>>
Python装饰器
查看>>
php7.2 编译安装
查看>>
ios mjextension 字典数组转模型数组并转化为jsonString
查看>>
对 Windows 窗体控件进行线程安全调用
查看>>
iOS tableView分割线从头开始
查看>>
润乾集算报表的层次数据集理解
查看>>
小蚂蚁学习数据结构(14)——二叉树的创建
查看>>
【CXF】- Spring 整合 webservice CXF
查看>>
XDCTF成长记录
查看>>
registered the JDBC driver [com.mysql.jdbc.Driver]
查看>>
如何有效删除Redis中比较大的Hash Key
查看>>
Linux系统中的文本处理工具
查看>>
IDE---Python IDE之Eric5在window下的安装
查看>>
python---LineReceiver实现记录服务器
查看>>
Mybatis调用Oracle中的存储过程和function
查看>>
telnet :No route to host
查看>>
基本安装lnmp环境
查看>>
yum源资料汇总
查看>>
7、MTC与MTV,http请求介绍
查看>>