全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解Spring Boot集成MyBatis(注解方式)

MyBatis是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架,避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。spring Boot是能支持快速创建Spring应用的Java框架。本文通过一个例子来学习Spring Boot如何集成MyBatis,而且过程中不需要XML配置。

创建数据库

本文的例子使用MySQL数据库,首先创建一个用户表,执行sql语句如下:

CREATE TABLE IF NOT EXISTS user (
 `id` INT(10) NOT NULL AUTO_INCREMENT,
 `name` VARCHAR(50) NULL DEFAULT NULL ,
 `age` INT(2) NOT NULL ,
 PRIMARY KEY (id)
)

工程目录结构与依赖配置

首先新建一个Maven工程,并配置Pom依赖,本例中所用到的依赖如下:

<parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>1.4.2.RELEASE</version>
  <relativePath />
</parent>

<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>1.1.1</version>
  </dependency>
  <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.40</version>
  </dependency>
</dependencies>

<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
  </plugins>
</build>

然后创建一下工程目录结构,如下图所示:

代码文件内容

0. 创建配置文件——application.properties

写入一下内容:

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=123456

1. 创建POJO——entity/User.java

这是一个POJO,包含了id, name, age三个属性,代码如下:

package com.xyz.dbtest.entity;
public class User {
  private int id;
  private String name;
  private int age;

  public int getId() {  return id;  }

  public void setId(int id) { this.id = id;  }

  public String getName() {  return name;  }

  public void setName(String name) { this.name = name;  }

  public int getAge() {  return age;  }

  public void setAge(int age) {  this.age = age;  }
}

2. 创建一个数据层接口——service/UserService.java

这是一个Mapper类,代码如下:

package com.xyz.dbtest.dao;

import com.xyz.dbtest.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import java.util.List;

@Mapper //1
public interface UserDao {
  @Results({ //2
      @Result(property = "id", column = "id"), //2
      @Result(property = "name", column = "name"),
      @Result(property = "age", column = "age")
  })
  @Select("SELECT * FROM user WHERE age = #{age}") //3
  List<User> get(int age);

  @Insert("INSERT INTO user(name, age) VALUES (#{name}, #{age})") //3
  void insert(User user);
}

//1 @Mapper将UserDao声明为一个Mapper接口
//2 @Results是结果映射列表,@Result中property是User类的属性名,colomn是数据库表的字段名
//3 @Select, @Insert 分别代表了执行的真实SQL

3. 创建一个用户服务——service/UserService.java

这是一个服务类Bean,提供三个函数功能,代码如下:

package com.xyz.dbtest.service;

import com.xyz.dbtest.dao.UserDao;
import com.xyz.dbtest.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;

@Service //声明成一个spring bean
public class UserService {

  @Autowired //连接到UserDao Bean
  private UserDao userDao;

  public String show() {
    return "Hello World!";
  }

  public List<User> showDao(int age) {
    return userDao.get(age);
  }

  public String insert(String name, int age) { //插入一条记录
    User user = new User();
    user.setName(name);
    user.setAge(age);
    userDao.insert(user);
    return "Insert ( \""+name+"\", age"+age+") OK!";
  }
}

4. 常见一个Web Controller——controller/UserController.java

这是一个Spring Web的Controller类,引入了spring-boot-starter-web依赖,代码如下:

package com.xyz.dbtest.controller;

import com.xyz.dbtest.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RestController //声明为一个Restful的Controller
public class UserController {
  @Autowired //自动连接到UserService Bean
  private UserService userService;

  @RequestMapping(value = "/show")
  public String show() {
    return userService.show();
  }

  @RequestMapping(value = "/showDao")
  public Object showDao(int age) {
    return userService.showDao(age);
  }

  @RequestMapping(value="/insert")
  public String insert(String name, int age) {
    return userService.insert(name, age);
  }
}

5. 创建启动类——main/StartApp.java

这是一个spring boot启动类。代码如下:

package com.xyz.dbtest.main;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication(scanBasePackages = "com.xyz.dbtest") //1
@MapperScan(basePackages = "com.xyz.dbtest.dao") //2
public class StartApp {
  public static void main(String[] args) {
    SpringApplication.run(StartApp.class, args);
  }
}

//1 由于StartApp类位于基础包的自包中,因此需要设置scanBasePackage
//2 设置Mapper接口所在的包

运行结果

运行Sql语句创建数据库表后,运行StartApp类。启动成功如下图所示

测试show服务,结果如下:

测试showDao服务,在输入URL时需要将参数打包进url,结果如下:
不带参数时,访问错误:

带参数时,访问成功,由于数据库中没有记录,所以结果是一个空列表:

测试insert服务

再次测试showDao服务

结语

通过本文的例子可以看出,使用Spring boot集成MyBatis几乎不用任何配置工作,能有效加快开发效率!

代码库地址:github地址

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Spring  # Boot集成MyBatis  # 注解 


相关文章: 如何选择可靠的免备案建站服务器?  制作网站的公司有哪些,做一个公司网站要多少钱?  岳西云建站教程与模板下载_一站式快速建站系统操作指南  建站之星24小时客服电话如何获取?  建站之星免费版是否永久可用?  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  如何在云虚拟主机上快速搭建个人网站?  公司网站制作需要多少钱,找人做公司网站需要多少钱?  Bpmn 2.0的XML文件怎么画流程图  网站制作员失业,怎样查看自己网站的注册者?  表情包在线制作网站免费,表情包怎么弄?  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  建站主机与服务器功能差异如何区分?  如何快速搭建二级域名独立网站?  网站制作软件有哪些,制图软件有哪些?  如何选择建站程序?包含哪些必备功能与类型?  如何续费美橙建站之星域名及服务?  韩国服务器如何优化跨境访问实现高效连接?  ,购物网站怎么盈利呢?  上海网站制作开发公司,上海买房比较好的网站有哪些?  代刷网站制作软件,别人代刷火车票靠谱吗?  如何快速启动建站代理加盟业务?  昆明高端网站制作公司,昆明公租房申请网上登录入口?  如何在橙子建站中快速调整背景颜色?  专业网站制作服务公司,有哪些网站可以免费发布招聘信息?  杭州银行网站设计制作流程,杭州银行怎么开通认证方式?  北京网站制作公司哪家好一点,北京租房网站有哪些?  网站制作培训多少钱一个月,网站优化seo培训课程有哪些?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析  重庆市网站制作公司,重庆招聘网站哪个好?  如何在建站之星网店版论坛获取技术支持?  郑州企业网站制作公司,郑州招聘网站有哪些?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  青浦网站制作公司有哪些,苹果官网发货地是哪里?  股票网站制作软件,网上股票怎么开户?  七夕网站制作视频,七夕大促活动怎么报名?  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  c# 在高并发场景下,委托和接口调用的性能对比  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  高性价比服务器租赁——企业级配置与24小时运维服务  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  保定网站制作方案定制,保定招聘的渠道有哪些?找工作的人一般都去哪里看招聘信息?  建站主机是否等同于虚拟主机?  ,南京靠谱的征婚网站?  建站之星安装后如何配置SEO及设计样式?  制作网站怎么制作,*游戏网站怎么搭建?  广东专业制作网站有哪些,广东省能源集团有限公司官网?  Python lxml的etree和ElementTree有什么区别  ,怎么用自己头像做动态表情包? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。