文档章节

Spring Boot 中使用 Mybatis

阿刚ABC
 阿刚ABC
发布于 2017/07/06 13:04
字数 792
阅读 415
收藏 3

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

通过观看https://my.oschina.net/sdlvzg/blog/1154281创建项目,再执行以下操作

在Mysql中创建表

CREATE TABLE `mybatis_demo` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8

 

在pom.xml中引入依赖包

		<!-- mysql 数据库驱动. -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>

		<!-- spring-boot mybatis依赖-->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.2.1</version>
		</dependency>

在application.properties引入数据库联接配置信息


########################################################
###datasource
########################################################
spring.datasource.url = jdbc:mysql://192.168.1.121:3306/lvgangdb
spring.datasource.username = aorakidb
spring.datasource.password = Yes@126.com
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.max-active=20
spring.datasource.max-idle=8
spring.datasource.min-idle=8
spring.datasource.initial-size=10

 

编写代码

编写Bean

package org.lvgang.bean;

/**
 * Mybatis 测试实体类
 * @author Administrator
 *
 */
public class Demo {
	private long id;
	private String name;

	public long getId() {
	       return id;
	    }

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

	public String getName() {
		return name;
	}

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

编写Mapper

package org.lvgang.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.lvgang.bean.Demo;

/**
 * Demo实体持久化Mapper
 * @author Administrator
 */
public interface DemoMapper {
	/**
	 * 按名称查询
	 * @param name
	 * @return
	 */
	@Select("select * from mybatis_demo where name = #{name}")
	public List<Demo> getByName(String name);

	/**
	 * 按ID查询
	 * @param id
	 * @return
	 */
	@Select("select *from mybatis_demo where id = #{id}")
	public Demo getById(long id);
	
	/**
	 * 数据插入
	 * @param name
	 * @return
	 */
	@Insert("insert into mybatis_demo(name) value(#{name})")
	public int insert(String name);

	/**
	 * 数据更新
	 * @param id
	 * @param name
	 * @return
	 */
	@Update("UPDATE mybatis_demo SET name = #{name} WHERE id = #{id}")
	public int update(@Param("id") long id ,@Param("name") String name);
	
	/**
	 * 数据删除 
	 * @param id
	 * @return
	 */
	@Delete("DELETE FROM mybatis_demo where id = #{id}")
	public int delete(long id);

}

编写Service

package org.lvgang.service;

import org.lvgang.bean.Demo;
import org.lvgang.mapper.DemoMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * Demo管理业务层
 * @author Administrator
 *
 */
@Service
public class DemoManageService {
	@Autowired private DemoMapper demoMapper;
	
	/**
	 * 根据ID查询
	 * @param id
	 * @return
	 */
	public Demo getById(long id){
		return demoMapper.getById(id);
	}
	
	/**
	 * 数据插入
	 * @param name
	 * @return
	 */
	public int add(String name){
		return demoMapper.insert(name);
	}
	
	/**
	 * 根据ID更新
	 * @param id
	 * @param name
	 * @return
	 */
	public int update(long id ,String name){
		return demoMapper.update(id, name);
	}
	
	/**
	 * 删除数据
	 * @param id
	 * @return
	 */
	public int remove(long id){
		return demoMapper.delete(id);
	}
}

编写Controller

package org.lvgang.controller;

import org.lvgang.bean.Demo;
import org.lvgang.service.DemoManageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * Demo管理控制层
 * 
 * @author Administrator
 *
 */
@RestController
@RequestMapping("/demo")
public class DemoManageController {
	@Autowired
	private DemoManageService demoManageService;

	/**
	 * 根据ID查询
	 * @return
	 */
	@RequestMapping("/get")
	public Demo getById() {
		return demoManageService.getById(1);
	}
	
	/**
	 * 添加数据
	 * @return
	 */
	@RequestMapping("/add")
	public String add(){
		int i = demoManageService.add("lvgang");
		if(i>0){
			return "插入成功";
		}else{
			return "插入失败";
		}
	}
	
	/**
	 * 更新数据
	 * @return
	 */
	@RequestMapping("/update")
	public String update(){
		int i = demoManageService.update(1,"aaa");
		if(i>=0){
			return "更新成功";
		}else{
			return "更新失败";
		}
	}
	
	/**
	 * 删除数据
	 * @return
	 */
	@RequestMapping("/romove")
	public String romove(){
		int i = demoManageService.remove(2);
		if(i>=0){
			return "删除成功";
		}else{
			return "删除失败";
		}
	}
	
	
}

编写APP启动

package org.lvgang;

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

/**
 * Spring Boot启动类
 * @author Administrator
 */
@SpringBootApplication // 等价于@Configuration,@EnableAutoConfiguration和@ComponentScan
@MapperScan("org.lvgang.mapper")  //mybatis mapper搜索路径
public class Application {
	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}
}

在APP启动类时,需要添加mapper的加载路注解:

    @MapperScan("org.lvgang.mapper"),内容中可以通过*代表某N个路径

 

验证是否成功

通过Main方法启动项目,以上路径,并展示相应的内容表示成功

获取数据:http://localhost:8080/demo/get

添加数据:http://localhost:8080/demo/add

修改数据:http://localhost:8080/demo/update

删除数据:http://localhost:8080/demo/romove

© 著作权归作者所有

阿刚ABC
粉丝 42
博文 152
码字总数 118786
作品 0
济南
高级程序员
私信 提问
Spring Boot 整合 MyBatis

最近项目原因可能会继续开始使用MyBatis,已经习惯于spring-data的风格,再回头看xml的映射配置总觉得不是特别舒服,接口定义与映射离散在不同文件中,使得阅读起来并不是特别方便。 Spring...

中关村的老男孩
06/24
79
0
Springboot 中 Mybatis 的使用

官方文档: Mybatis开发团队为Spring Boot 提供了 MyBatis-Spring-Boot-Starter 方便使用。 要使用MyBatis-Spring-Boot-Starter模块,只需要在类路径中包含 mybatis-spring-boot-autoconfig...

不开心时不要学习
2018/01/19
2.8K
0
Spring Boot [集成-MyBatis]

导读: 在上篇文章中我们介绍了spring-data-jpa的一些常用方法,在这篇文章中我们在介绍关于mybatis与Spring Boot 的集成,及一些常用方法 集成: 这里有两种方式,一种是常规的Spring 应用的...

yangrd
2018/08/27
0
0
springboot集成mybatis

springboot集成mybatis application.yml 从哪里找到这些配置项: springboot 自己的配置项 https://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties......

黄威
2018/07/09
152
0
spring boot 整和 mybatis

spring boot 及 spring mvc 的简化配置及内容升华版。 在 spring boot 中如何整和mybatis 呢? 第一部:maven 依赖(可以在创建 spring boot 项目是勾选中) 第二部:在application.yml 中配...

这是一只小小鸟
04/14
20
0

没有更多内容

加载失败,请刷新页面

加载更多

RxJava进行单元测试的方式

@Test public void completeTask_retrievedTaskIsComplete() { // Given a new task in the persistent repository final Task newTask = new Task(TITLE, ""); ......

SuShine
40分钟前
5
0
正则表达式大全

检验手机号码 # 要求:手机号码必须为11位数字,以1开头,第二位为1或5或8。import redef verify_mobile(): mob = input("请输入手机号码:") ret = re.match(r"1[358]\d{9}", m......

彩色泡泡糖
44分钟前
7
0
QT之border-image属性

一、border-image的兼容性 border-image可以说是CSS3中的一员大将,将来一定会大放光彩,其应用潜力真的是非常的惊人。可惜目前支持的浏览器有限,仅Firefox3.5,chrome浏览器,Safari3+支持...

shzwork
44分钟前
6
0
Kubernetes Operator简易教程

1. 安装operator-sdk //安装 operator-sdk$ apt-get install operator-sdk.....$ operator-sdk versionoperator-sdk version: v0.7.0$ go versiongo version go1.11.4 darwin/amd64 2......

Robotcl_Blog
44分钟前
5
0
再谈DAG任务分解和Shuffle RDD

1、DagScheduler分析 DagScheduler功能主要是负责RDD的各个stage的分解和任务提交。Stage分解是从触发任务调度过程的finalStage开始倒推寻找父stage,如果父stage没有提交任务则循环提交缺失...

守望者之父
50分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部