java入门015~springboot2整合mybatis,轻松实现mysql数据的增删改查
前面我们讲完了一些java和springboot的基础知识以后,今天我们就来讲下springboot实现数据库的管理。
目前比较主流的方式有两种
1,springboot结合mybatis管理数据库 2,springboot结合jpa管理数据
这两种方式各有各的好,今天我们就先来讲讲springboot2结合mybatis实现数据的增删改查操作,下一节我们再讲jpa。
一,在pom.xml里添加mybatis依赖。
如上图所示,我们需要添加mybatis和mysql这两个依赖。代码如下
<!-- mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>LATEST</version>
</dependency>
<!-- mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
这里做下简单说明 mybatis库是我们实现mybatis的核心。 mysql库,是用来驱动管理数据库用的。
二,在application.yml里配置如下信息
上图就是做了,本地服务器端口配置,数据库关联配置。重要的是下面这段。
mybatis:
mapper-locations: classpath:/mybatis/mapper/*.xml
config-location: classpath:/mybatis/config/mybatis-config.xml
- mapper-locations 是配置我们mapper.xml文件的位置,我们把它配置在/src/main/resource/mybatis/mapper目录下。
- config-locations 是配置mybatis-confg.xml文件的位置。我们把它配置在/src/main/resource/mybatis/config目录下。
接下来我们在resource目录下新建mybatis目录,然后在mybatis目录下新建/mapper目录和/config目录
三,配置mybatis的配置xml文件
1,在/src/main/resource/mybatis/config目录下新建mybatis-config.xml
具体代码如下。
把代码给大家贴出来。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<!-- 数据库表对应的bean -->
<typeAliases>
<package name="com.shitou.springbootdemos.mybatis.bean"/>
</typeAliases>
</configuration>
这里要注意的是,typeAliases下的package配置的是我们实体类所在目录。
<typeAliases>
<package name="com.shitou.springbootdemos.mybatis.bean"/>
</typeAliases>
如我们的User实体类,在下图所示的这个目录
2,在/src/main/resource/mybatis/mapper目录下新建UserMapper.xml
这个UserMapper.xml里就是我们要执行的一些sql语句。先把代码给大家贴出来。
<?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">
<!--声明对应bean的命名空间-->
<mapper namespace="com.shitou.springbootdemos.mybatis.repository.UserMapper">
<!-- 查询到的结果返回样式-->
<resultMap id="SysUserResultMap" type="User">
<id property="id" column="id" javaType="java.lang.Integer" jdbcType="INTEGER"/>
<result property="name" column="name" javaType="java.lang.String" jdbcType="VARCHAR"/>
<result property="age" column="AGE" javaType="java.lang.Integer" jdbcType="INTEGER"/>
</resultMap>
<!--增-->
<insert id="save" parameterType="User">
insert into user
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="name != null">
name,
</if>
<if test="age != null">
age
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=INTEGER},
</if>
<if test="name != null">
#{name,jdbcType=VARCHAR},
</if>
<if test="age != null">
#{age,jdbcType=INTEGER},
</if>
</trim>
</insert>
<!-- 删-->
<delete id="deleteById">
delete from user where id=#{id}
</delete>
<!-- 改-->
<update id="update" parameterType="User">
update user
<set>
<if test="name != null">
name = #{name,jdbcType=VARCHAR},
</if>
<if test="age != null">
age = #{age,jdbcType=INTEGER},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
</update>
<!-- 查-->
<select id="selectAll" resultMap="SysUserResultMap">
select * from user
</select>
<select id="selectById" resultMap="SysUserResultMap">
select
*
from user
where id = #{id,jdbcType=INTEGER}
</select>
</mapper>
四,创建User实体类。
package com.shitou.springbootdemos.mybatis.bean;
/**
* user数据表对应的bean
*/
public class User {
private Integer id;
private String name;
private Integer age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + ''' +
", age=" + age +
'}';
}
}
我们这里就简单的创建一个user类,和我们的user表对应,只有id,name,age三个字段
五,创建UserMapper接口,用来做增删改查操作
代码贴出来给大家
/**
* user表对应的mapper
*/
public interface UserMapper {
//新增用户
int save(User user);
//更新用户信息
int update(User user);
//根据id删除
int deleteById(int id);
//根据id查询
User selectById(int id);
//查询所有用户信息
List<User> selectAll();
}
六,创建user表。
我创建数据库表是用idea自带的可视化管理工具创建的,我前面有写文章讲过,如果借助idea来可视化管理mysql数据库。大家可以去翻看我之前的文章。
可视化建表
这时候mybatis的配置还不算成功,我们需要把mapper的路径暴露给spring 让它来扫描管理,所以我们需要在Chapter4Application.java文件上加上注解@MapperScan("com.shitou.springbootdemos.mybatis.repository") 扫描mapper的所在位置
七,在启动类里自动扫描我们定义的mapper接口
至此。我们mybaits的接口算是编写完毕,接下来我们来测试一下吧。
八,定义controller
如上图所示,我们定义一个controller来实现一个增加数据的接口。和一个查询所有用户的接口。 1, 启动项目。
2, 在浏览器中访问save接口
返回1代表添加新用户成功,到user表里看下,也能看到数据添加成功
3,在浏览器里访问getAll接口
可以看到我们成功的访问到我们上一步添加的数据。
到这里我们就轻松的实现了springboot2结合mybatis来管理数据库的功能了
源码:
https://github.com/qiushi123/springboot-demos
视频讲解
https://edu.csdn.net/course/detail/23443
往期回顾
- java入门001--IntelliJ IDEA 配置阿里云Maven国内仓库(含idea下载及破解教程) https://www.jianshu.com/p/605d7cd9da59
- java入门002~jdk8 window版32位 64位 Mac版64位安装包https://www.jianshu.com/p/504291d87cc5
- java入门003~手把手教你开发自己的第一个java项目(基于springboot2.1.5) https://www.jianshu.com/p/fe1ec90eb99e
- java入门004~五分钟教你用java开发一个小程序后台服务器~看完你也会https://www.jianshu.com/p/23bb2aac3986
- java入门005~springboot实现单个文件上传(图片 文档 视频 音频都可以上传) https://www.jianshu.com/p/4dfbdc28b7c0
- java入门006~springboot实现多文件的上传(java多文件的上传) https://www.jianshu.com/p/52175a3216c0
- java入门013~java异常的捕获~springboot通过@ControllerAdvice和@ExceptionHandler来捕获异常 https://www.jianshu.com/p/945c3e7e962d
- java入门014~springboot自定义错误页面 并重定向到首页 https://www.jianshu.com/p/988447980c7b
觉得不错,请在看
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- 树状数组-HDU3015 Disharmony Trees
- 放弃fastjson,拥抱Jackson
- Spring入门
- 贪心-HDU1789 Doing Homework again(活动安排问题)
- flink实战-实时计算平台通过api停止流任务
- JAVA初级岗面试知识点——基础篇
- flink实战-flink streaming sql 初体验
- flink实战教程-使用set实时计算当天网站uv
- 贪心-HDU3348 coins(钱币问题)
- 归并排序详解 -HDU4911 Inversion(逆序对)
- 数据结构与算法——稀疏数组
- Maven安装配置详细教程
- 数据结构与算法——冒泡排序
- MyBatis Generator逆向工程-你还在手写mapper吗?
- JSR303后端校验详解