Spring boot 整合 Mybatis (完整版)
最近工作上时间有点多,然后自己就学习了一下Spring boot,外加上Mybatis,在实际开发中都是比较常用的,所以这篇写一下SpringBoot整合Mybatis。
一、数据准备
CREATE TABLE `bookbean` (
`name` varchar(255) DEFAULT NULL,
`author` varchar(255) DEFAULT NULL,
`price` varchar(255) DEFAULT NULL
) INSERT INTO `bookbean` VALUES ('张三', 'ZHANGSAN', '');
INSERT INTO `bookbean` VALUES ('李四', 'LISI', '');
INSERT INTO `bookbean` VALUES ('王五', 'WANGWU', '');
二、引入依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <name>demo</name>
<description>Demo project for Spring Boot</description> <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<mybatis.version>3.4.5</mybatis.version>
<mybatis-spring.version>1.3.1</mybatis-spring.version>
<mysql.version>6.0.6</mysql.version>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>true</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency> <!-- mybatis依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency> <!-- mybatis-spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis-spring.version}</version>
</dependency> <!-- mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
</dependency> <dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency> <!-- 数据源 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.29</version>
</dependency>
</dependencies> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build> </project>
三、数据库配置文件
项目application.properties内容如下:
banner.charset=UTF-8
server.tomcat.uri-encoding=UTF-8
spring.http.encoding.charset=UTF-8
spring.http.encoding.enabled=true
spring.http.encoding.force=true
spring.messages.encoding=UTF-8
#配置设置不同的信息名字获取不同的配置文件
#application-dev.properties:用于开发环境
#application-test.properties:用于测试环境
#application-prod.properties:用于生产环境
spring.profiles.active=dev #spring boot 默认会加载 classpath:logback-spring.xml 或者 classpath:logback-spring.groovy。
#如需要自定义文件名称,在 application.properties 中配置 logging.config 选项即可
logging.config=classpath:logback-spring.xml ######数据库链接配置########
spring.datasource.url=jdbc\:mysql\://127.0.0.1\:3306/aa
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.initialSize=5
spring.datasource.minIdle=5
spring.datasource.maxActive=20
spring.datasource.maxWait=60000 mybatis.mapperLocations=classpath:mybatis/mapper/*.xml
mybatis.config-location=classpath:mybatis/mybatis-config.xml
四、代码
实体类BookBean.java
public class BookBean {
private String name;
private String author;
private String price;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
@Override
public String toString() {
return "BookBean [name=" + name + ", author=" + author + ", price="
+ price + "]";
}
public BookBean(String name, String author, String price) {
super();
this.name = name;
this.author = author;
this.price = price;
}
public BookBean() {
// TODO Auto-generated constructor stub
} }
BookBeanMapper.java
package com.example.demo.mapper; import java.util.List; import org.apache.ibatis.annotations.Mapper; import com.example.demo.bean.BookBean; @Mapper
public interface BookBeanMapper { /**
* 集合
* @return
*/
public List<BookBean> findBookBeanInfo(); /**
* 添加
* @param bookBean
* @return
*/
public int addBookBeanInfo(BookBean bookBean); /**
* 删除
* @param id
* @return
*/
public int delBookBeanInfo(String id);
}
BookBeanService.java
package com.example.demo.service; import java.util.List; import com.example.demo.bean.BookBean; public interface BookBeanService {
/**
* 集合
* @return
*/
public List<BookBean> findBookBeanInfo(); /**
* 添加
* @param bookBean
* @return
*/
public int addBookBeanInfo(BookBean bookBean); /**
* 删除
* @param id
* @return
*/
public int delBookBeanInfo(String id);
}
BookBeanServiceImpl.java
package com.example.demo.service.impl; import java.util.List; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import com.example.demo.bean.BookBean;
import com.example.demo.mapper.BookBeanMapper;
import com.example.demo.service.BookBeanService; @Service
public class BookBeanServiceImpl implements BookBeanService{ @Autowired
private BookBeanMapper bookBeanMapper; @Override
public List<BookBean> findBookBeanInfo() { return bookBeanMapper.findBookBeanInfo();
} @Override
public int addBookBeanInfo(BookBean bookBean) { return bookBeanMapper.addBookBeanInfo(bookBean);
} @Override
public int delBookBeanInfo(String id) { return bookBeanMapper.delBookBeanInfo(id);
} }
TestController.java
package com.example.demo.controller; import java.util.List; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController; import com.example.demo.bean.BookBean;
import com.example.demo.service.BookBeanService;
import com.example.demo.util.JsonResult; @RestController
@RequestMapping(value="/demo")
public class TestController { @Autowired
private BookBean bookBean; @Autowired
private BookBeanService bookBeanService; @RequestMapping(value="/helloworld",produces="text/plan;charset=UTF-8")
public String helloworld() {
System.out.println(bookBean.toString());
return "helloworld-"+bookBean.getName()+"----"+bookBean.getAuthor()+"----"+bookBean.getPrice();
} @GetMapping("/helloworld2")
public String helloworld2() {
return "helloworld2";
} /**
* 根据id删除用户
* @param id
* @return
*/
@RequestMapping(value = "/delete/{id}", method = RequestMethod.GET)
public ResponseEntity<JsonResult> delete (@PathVariable(value = "id") String id){
JsonResult r = new JsonResult();
try {
int ret = bookBeanService.delBookBeanInfo(id);
if (ret < 0) {
r.setResult(ret);
r.setStatus("fail");
} else {
r.setResult(ret);
r.setStatus("ok");
}
} catch (Exception e) {
r.setResult(e.getClass().getName() + ":" + e.getMessage());
r.setStatus("error"); e.printStackTrace();
}
return ResponseEntity.ok(r);
} /**
* 查询
* @return
*/
@RequestMapping(value="/find")
public ResponseEntity<JsonResult> add(){
JsonResult r = new JsonResult();
try {
System.out.println(1);
List<BookBean> findBookBeanInfo = bookBeanService.findBookBeanInfo();
r.setResult(findBookBeanInfo);
r.setStatus("ok");
} catch (Exception e) {
r.setResult(e.getClass().getName() + ":" + e.getMessage());
r.setStatus("error"); e.printStackTrace();
} return ResponseEntity.ok(r); } }
JsonResult类是一个通用转json的工具类 如下:
package com.example.demo.util; /**
* 通用json返回类
* @author Administrator
*
*/
public class JsonResult {
private String status = null; private Object result = null; public JsonResult status(String status) {
this.status = status;
return this;
} public String getStatus() {
return status;
} public void setStatus(String status) {
this.status = status;
} public Object getResult() {
return result;
} public void setResult(Object result) {
this.result = result;
} }
目录结构:
BookbeanMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.BookBeanMapper" >
<resultMap id="bookBeanMap" type="bookBean" >
<result column="name" property="name" jdbcType="VARCHAR" />
<result column="author" property="author" jdbcType="VARCHAR" />
<result column="price" property="price" jdbcType="VARCHAR"/>
</resultMap> <sql id="bookbean" >
name,author,price
</sql> <select id="findBookBeanInfo" resultMap="bookBeanMap">
select <include refid="bookbean"/> from BOOKBEAN
</select> <insert id="addBookBeanInfo" parameterType="bookBean">
insert into BOOKBEAN(name,author,price) values(#{name},#{author},#{price})
</insert> <delete id="delBookBeanInfo" parameterType="string">
delete from BOOKBEAN where price = #{price}
</delete> </mapper>
然后启动DemoApplication.java 打开浏览器 输入http://localhost:8081/demo/find 就出现下图
完成到这里说明springboot整合mybatis就成功了,有什么不对的地方欢迎朋友们提出建议!
版权声明:本文为博主原创文章,未经博主允许不得转载。
http://www.cnblogs.com/tangyin/p/8862687.html
Spring boot 整合 Mybatis (完整版)的更多相关文章
- 太妙了!Spring boot 整合 Mybatis Druid,还能配置监控?
Spring boot 整合 Mybatis Druid并配置监控 添加依赖 <!--druid--> <dependency> <groupId>com.alib ...
- Spring Boot整合Mybatis并完成CRUD操作
MyBatis 是一款优秀的持久层框架,被各大互联网公司使用,本文使用Spring Boot整合Mybatis,并完成CRUD操作. 为什么要使用Mybatis?我们需要掌握Mybatis吗? 说的官 ...
- spring boot 整合 mybatis 以及原理
同上一篇文章一样,spring boot 整合 mybatis过程中没有看见SqlSessionFactory,sqlsession(sqlsessionTemplate),就连在spring框架整合 ...
- Spring Boot 整合mybatis时遇到的mapper接口不能注入的问题
现实情况是这样的,因为在练习spring boot整合mybatis,所以自己新建了个项目做测试,可是在idea里面mapper接口注入报错,后来百度查询了下,把idea的注入等级设置为了warnin ...
- Spring Boot整合Mybatis报错InstantiationException: tk.mybatis.mapper.provider.base.BaseSelectProvider
Spring Boot整合Mybatis时一直报错 后来发现原来主配置类上的MapperScan导错了包 由于我使用了通用Mapper,所以应该导入通用mapper这个包
- Spring Boot整合MyBatis(非注解版)
Spring Boot整合MyBatis(非注解版),开发时采用的时IDEA,JDK1.8 直接上图: 文件夹不存在,创建一个新的路径文件夹 创建完成目录结构如下: 本人第一步习惯先把需要的包结构创建 ...
- Spring Boot整合Mybatis完成级联一对多CRUD操作
在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能.关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Myb ...
- Spring Boot系列(三):Spring Boot整合Mybatis源码解析
一.Mybatis回顾 1.MyBatis介绍 Mybatis是一个半ORM框架,它使用简单的 XML 或注解用于配置和原始映射,将接口和Java的POJOs(普通的Java 对象)映射成数据库中的记 ...
- Spring boot整合Mybatis
时隔两个月的再来写博客的感觉怎么样呢,只能用“棒”来形容了.闲话少说,直接入正题,之前的博客中有说过,将spring与mybatis整个后开发会更爽,基于现在springboot已经成为整个业界开发主 ...
- Spring Boot 整合 Mybatis 实现 Druid 多数据源详解
摘要: 原创出处:www.bysocket.com 泥瓦匠BYSocket 希望转载,保留摘要,谢谢! “清醒时做事,糊涂时跑步,大怒时睡觉,独处时思考” 本文提纲一.多数据源的应用场景二.运行 sp ...
随机推荐
- 【BootStrap】 布局组件 II
BootStrap 布局组件 II ■ 分页 BS中通过.pagination的ul元素来实现一个分页集合,一个典型的分页如下: <ul class="pagination" ...
- C++迭代器的使用和操作总结
迭代器是一种检查容器内元素并遍历元素的数据类型.C++更趋向于使用迭代器而不是下标操作,因为标准库为每一种标准容器(如vector)定义了一种迭代器类型,而只用少数容器(如vector)支持下标操作访 ...
- selenium2自动化测试学习笔记(五)-参数化编程,自动登陆网易QQ邮箱
学习python下使用selenium2自动测试第6天,参数化编程这节课花了两天时间. 本次编程主要时间是花在熟悉python上 知识点or坑点: 1.读取txt.xml.csv等文件存储的账号.密码 ...
- jsp pageEncoding属性详解
Java pageEncoding原理详解 首先看下文章解释: 意思是jsp文件本身的编码 巨大的疑问:这里有一个很大的问题,既然你都已经从jsp中读到了这条属性,证明内容读取正确,那你还需要知道这条 ...
- 【RabbitMQ系列】队列、绑定、交换器
队列: 从概念上来讲,AMQP消息路由必须有三部分:交换器.队列和绑定.生产者把消息发布到交换器上:消息最终到达队列,并被消费者接收:绑定决定了消息如何从路由器路由到特定的队列. 消费者通过以下两种方 ...
- django模型——数据库(二)
模型--数据库(二) 实验简介 模型的一些基本操作,save方法用于把对象写入到数据库,objects是模型的管理器,可以使用它的delete.filter.all.order_by和update等函 ...
- bzoj千题计划251:bzoj3672: [Noi2014]购票
http://www.lydsy.com/JudgeOnline/problem.php?id=3672 法一:线段树维护可持久化单调队列维护凸包 斜率优化DP 设dp[i] 表示i号点到根节点的最少 ...
- vue class与style 绑定详解——小白速会
一.绑定class的几种方式 1.对象语法 直接看例子: <div id="app3"> <div :class="{'success':isSucce ...
- day-1 用python编写一个简易的FTP服务器
从某宝上购买了一份<Python神经网络深度学习>课程,按照视频教程,用python语言,写了一个简易的FTP服务端和客户端程序,以前也用C++写过聊天程序,编程思路差不多,但是pytho ...
- nyoj 数的长度
描述 N!阶乘是一个非常大的数,大家都知道计算公式是N!=N*(N-1)······*2*1.现在你的任务是计算出N!的位数有多少(十进制)? 输入 首行输入n,表示有多少组测试数据(n<1 ...