全民学后端快餐教程(3) - 使用MyBatis访问数据库

简介: 使用流行的持久层框架MyBatis来访问数据库

全民学后端快餐教程(3) - 使用MyBatis访问数据库

上节我们学习了JdbcTemplate来访问数据库,比起使用原始的JDBC来,还是方便很多的。至少不用去处理大量的Exception。
但是我们还是可以通过一些框架,使工作量变得更少一些。这方面的主流选择是MyBatis.

MyBatis简介

MyBatis是由iBatis发展而来的。iBatis最早是由Clinton Begin于2001年开发,后来在2004年捐赠给了Apache基金会。
2010年,iBatis团队决定从Apache项目中分离出来,并改名myBatis.

MyBatis是支持SQL, 存储过程和高级映射的持久层框架。

用MyBatis访问数据库

略不幸的是,myBatis没有Spring Boot的官方支持,但是myBatis团队自己提供了与Spring Boot的整合。

引用MyBatis

首先我们引入与Spring Boot配合的依赖。

        <!-- MyBatis -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>

Mapper

MyBatis通过Mapper的方式来实现SQL语句与函数调用之间的映射。
下面我们写两个查询的SQL语句。需要替换的参数,用#{变量名}来代替就好:

package cn.alios.system.service.prefix;

import cn.alios.system.service.prefix.pojo.Issue;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

@Mapper
public interface IssueMapper {
    @Select("select id, filename, linenum, issuestring from issue where id = #{id};")
    Issue findIssue(Long id);

    @Select("select id, filename, linenum, issuestring from issue where filename like concat('%', #{filename}, '%');")
    Issue findIssueByFileName(String filename);
}

调用Mapper实现查询

我们还是先通过@Autowired将issueMapper自动装配进来:

    @Autowired
    IssueMapper issueMapper = null;

然后就调用就好啦:

    @RequestMapping("/findbyid")
    @ResponseBody
    public String testFindById() {
        Issue issue = issueMapper.findIssue((long) 1);
        if (issue != null) {
            return issue.getFilename() + "," + issue.getIssuestring()+ ":" + issue.getLinenum();
        } else {
            return "Test MyBatis failed!";
        }
    }

我们看下完整的Controller的代码:

package cn.alios.system.service.prefix.controller;

import cn.alios.system.service.prefix.IssueMapper;
import cn.alios.system.service.prefix.pojo.Issue;
import cn.alios.system.service.prefix.service.JdbcTemplateIssueServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
@RequestMapping("/test")
public class TestController {
    @Autowired
    JdbcTemplateIssueServiceImpl jdbcTemplateIssueService = null;

    @Autowired
    IssueMapper issueMapper = null;

    @RequestMapping("/")
    @ResponseBody
    public String test() {
        Issue issue = jdbcTemplateIssueService.getIssue((long) 1);
        if (issue != null) {
            return issue.getFilename() + "," + issue.getIssuestring();
        } else {
            return "Test Controller!";
        }
    }

    @RequestMapping("/findbyid")
    @ResponseBody
    public String testFindById() {
        Issue issue = issueMapper.findIssue((long) 1);
        if (issue != null) {
            return issue.getFilename() + "," + issue.getIssuestring()+ ":" + issue.getLinenum();
        } else {
            return "Test MyBatis failed!";
        }
    }

    @RequestMapping("/findbyfilename")
    @ResponseBody
    public String testFindByFileName() {
        Issue issue = issueMapper.findIssueByFileName("test");
        if (issue != null) {
            return issue.getFilename() + "," + issue.getIssuestring()+ ":" + issue.getLinenum();
        } else {
            return "Test MyBatis failed!";
        }
    }
}

测试一下,mvn package,然后运行。
在browser中测试一下:http://127.0.0.1:8080/test/findbyfilename
输出如下:test.java,test:1

目录
相关文章
|
1天前
|
SQL 安全 Java
MyBatis-Plus条件构造器:构建安全、高效的数据库查询
MyBatis-Plus 提供了一套强大的条件构造器(Wrapper),用于构建复杂的数据库查询条件。Wrapper 类允许开发者以链式调用的方式构造查询条件,无需编写繁琐的 SQL 语句,从而提高开发效率并减少 SQL 注入的风险。
7 1
MyBatis-Plus条件构造器:构建安全、高效的数据库查询
|
3天前
|
SQL 存储 数据库
深入理解@TableField注解的使用-MybatisPlus教程
`@TableField`注解在MyBatis-Plus中是一个非常灵活和强大的工具,能够帮助开发者精细控制实体类与数据库表字段之间的映射关系。通过合理使用 `@TableField`注解,可以实现字段名称映射、自动填充、条件查询以及自定义类型处理等高级功能。这些功能在实际开发中,可以显著提高代码的可读性和维护性。如果需要进一步优化和管理你的MyBatis-Plus应用程
19 3
|
26天前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
183 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
18天前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
29 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
20天前
|
Java 数据库连接 API
springBoot:后端解决跨域&Mybatis-Plus&SwaggerUI&代码生成器 (四)
本文介绍了后端解决跨域问题的方法及Mybatis-Plus的配置与使用。首先通过创建`CorsConfig`类并设置相关参数来实现跨域请求处理。接着,详细描述了如何引入Mybatis-Plus插件,包括配置`MybatisPlusConfig`类、定义Mapper接口以及Service层。此外,还展示了如何配置分页查询功能,并引入SwaggerUI进行API文档生成。最后,提供了代码生成器的配置示例,帮助快速生成项目所需的基础代码。
|
25天前
|
JavaScript 前端开发
vue3教程,如何手动获取后端数据(入门到精通3,新人必学篇)
本文提供了一个Vue 3教程,讲解了如何使用axios库手动从后端获取数据,包括安装axios、配置后端访问地址、编写路由地址、发起HTTP请求以及在组件中读取和打印响应数据的步骤。
146 0
vue3教程,如何手动获取后端数据(入门到精通3,新人必学篇)
|
27天前
|
存储 前端开发 Java
Java后端如何进行文件上传和下载 —— 本地版(文末配绝对能用的源码,超详细,超好用,一看就懂,博主在线解答) 文件如何预览和下载?(超简单教程)
本文详细介绍了在Java后端进行文件上传和下载的实现方法,包括文件上传保存到本地的完整流程、文件下载的代码实现,以及如何处理文件预览、下载大小限制和运行失败的问题,并提供了完整的代码示例。
181 1
|
27天前
|
前端开发 Java 数据库连接
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
本文是一份全面的表白墙/留言墙项目教程,使用SpringBoot + MyBatis技术栈和MySQL数据库开发,涵盖了项目前后端开发、数据库配置、代码实现和运行的详细步骤。
33 0
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
|
27天前
|
前端开发 Java
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
文章介绍了如何使用SpringBoot创建简单的后端服务器来处理HTTP请求,包括建立连接、编写Controller处理请求,并返回响应给前端或网址。
45 0
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
|
3月前
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】