• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Java > 详解Spring Boot集成MyBatis(注解方式)

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

作者:xuyuzhuang1991 字体:[增加 减小] 来源:互联网 时间:2017-05-28

xuyuzhuang1991 通过本文主要向大家介绍了spring boot注解详解,spring boot详解,spring配置文件详解,spring注解详解,spring aop详解等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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)
)
</div>

工程目录结构与依赖配置

首先新建一个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>

</div>

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

project-structure

代码文件内容

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
</div>

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;  }
}

</div>

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);
}
</div>

//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!";
  }
}

</div>

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);
  }
}

</div>

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);
  }
}

</div>

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

运行结果

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

run-success

测试show服务,结果如下:

show-service

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

showDao-fail

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

showDao-fail

测试insert服务

insert-abc20

insert-xyz20

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 详解Spring boot上配置与使用mybatis plus
  • 详解Spring Boot中Controller用法
  • 详解Spring Boot 定时任务的实现方法
  • 详解在Spring Boot中使用数据库事务
  • spring boot整合CAS配置详解
  • Spring Boot Redis 集成配置详解
  • 详解Spring Boot集成MyBatis(注解方式)
  • Spring Boot的Profile配置详解
  • 详解spring boot配置 ssl
  • spring boot 的常用注解使用小结

相关文章

  • 2017-05-28Spring整合Redis完整实例代码
  • 2017-05-28Java中终止线程的方法详解
  • 2017-05-28struts2实现文件上传显示进度条效果
  • 2017-05-28Java 继承方法实例详解
  • 2017-05-28值得Java程序猿阅读的书籍
  • 2017-05-28详解Spring MVC自动为对象注入枚举类型
  • 2017-05-28TreeSet详解和使用示例_动力节点Java学院整理
  • 2017-05-28JVM教程之内存管理和垃圾回收(三)
  • 2017-05-28详解在Spring Boot中使用Mysql和JPA
  • 2017-05-28Java自定义注解实现Redis自动缓存的方法

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Java中初始化块详解及实例代码
    • Spring Boot启动过程(四)之Spring Boot内嵌Tomcat启动
    • Java微信公众平台开发(5) 文本及图文消息回复的实现
    • spring boot拦截器实现IP黑名单实例代码
    • 全排列算法-递归与字典序的实现方法(Java)
    • Spring mvc整合mybatis(crud+分页插件)操作mysql
    • java并发之ArrayBlockingQueue详细介绍
    • java处理按钮点击事件的方法
    • Java多线程 实例解析
    • Spring Boot 启动加载数据 CommandLineRunner的使用

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有