使用mybatis框架进行增删改查大致有两种基础方式,一种扩展方式。两种基础方式分别是使用xml映射文件和使用方法注解。扩展方式是使用mybatis-plus的方式,其用法类似于spring-data-jpa。

1.引入依赖

<!--springboot的web起步依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Mybatis起步依赖 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
<!-- MySql连接驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>

2.entity实体类

@TableName(value = "tb_user")//使用mybatis-plus时需要添加,与数据库中的表建立关系
public class SysUser implements Serializable { @TableId(type = IdType.AUTO)//使用mybatis-plus时需要添加,主键生成策略
private Long id; private String username; private String password; private String salt;
private String avatar;
private String introduce;
private String remark;
//省略get,set方法
}

3.创建application.properties配置文件

#DB Configuration数据库信息:
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql:///test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.type=com.zaxxer.hikari.HikariDataSource #spring集成Mybatis环境
#pojo别名扫描包
mybatis.type-aliases-package=cn.zhq.system.entity
#加载Mybatis映射文件
mybatis.mapper-locations=classpath:mapper/*Mapper.xml # 打印sql
#打印sql到控制台
logging.level.cn.zhq.system.mapper=debug
mybatis.type-aliases-package是实体所在包的位置,mybatis.mapper-locations是配置文件所在的位置。初次使用的时候最好加上打印sql的配置,如果出现错误的话,这样容易找出错误原因。

4.创建UserMapper类

@Mapper
public interface UserMapper { }

5.在spring boot的application加上注解

@EntityScan("cn.zhq.system.entity")//填写 entity类所在包的位置。

加上这个注解后,springboot就可以扫描能实体类。

6.进行增删改查

6.1 使用mapper.xml进行增删改查

6.1.1 编写UserMapper类中的方法

    /**
* 根据Name查询用户数据
*
* @param username
* @return
*/
SysUser findByName(String username);

6.1.2  在resources的mapper目录下创建UserMapper.xml配置文件

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.zhq.system.mapper.UserMapper">
<select id="findByName" resultType="sysuser" parameterType="String">
select * from tb_user where username = #{username}
</select>
</mapper>

使用select标签执行查询语句,使用update标签进行 增,删,改操作。其中 id是UserMapper类中方法的名称,resultType是返回值的类型,parameterType是接收的参数类型。

6.2 使用注解进行增删改查

    /**
* 更新用户名
* @param username
*/
@Update("update tb_user set username= #{username} where id = #{id}")
void updateByAvatar(String username,Long id);

使用@Update注解后,就无需再编写UserMapper配置文件了,同理@Updae可以进行增删改操作。此外使用@Select进行查询。当进行一对多,多对多关系的查询时,还可以使用@Results注解指定返回结果的数据类型,这里就不细说了。

以上两种方式各有利弊,使用配置文件编写sql语句好处是耦合度低但过于麻烦,使用注解的方式相对于配置文件来说比较简单,但是耦合度高。如果是简单语句,建议是使用注解,如果是复杂语句,使用配置文件的方式。具体使用哪种方式,可以视实际情况而定。

6.3 使用mybatis-plus进行增删改查

mybatis-plus类似于spring data jpa , 内置查询,更新,删除,插入语句,使我们无需再写那些简单的sql语句。

6.3.1 引入依赖

 <!-- Mybatis Plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>

6.3.2 application.yml配置文件

# mybatis-plus
mybatis-plus:
type-aliases-package: cn.zhq.system.entity
mapper-locations: classpath:mapper/*.xml
configuration:
jdbc-type-for-null: null
global-config:
banner: false
type-aliases-package填写Entity实体类所在包的位置。mapper-locations:填写映射文件所在的位置,如果不写的话,在你的resources下的mapper配置文件会报错。

6.3.3 相关service,serviceImpl,mapper类

service:

public interface UserService  extends IService<SysUser> {

    /**
* 更新
*
* @param sysUser
*/
void update(SysUser sysUser);
}

serviceImpl:

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, SysUser> implements UserService {
@Autowired
private UserMapper userMapper; @Override
@Transactional
public void update(SysUser sysUser) {
userMapper.updateById(sysUser);
}
}

mapper:

@Mapper
public interface UserMapper extends BaseMapper<SysUser> {
}

虽然我们在UserMapper中没有定义任何方法,但是mybatisPlus集成了很多方法可供我们使用。

执行后,打印的sql语句结果如下

上手spring boot项目(三)之spring boot整合mybatis进行增删改查的更多相关文章

  1. 上手spring boot项目(三)之spring boot整合mybatis进行增删改查的三种方式。

    1.引入依赖. <!--springboot的web起步依赖--><dependency> <groupId>org.springframework.boot< ...

  2. Spring Boot入门系列(六)如何整合Mybatis实现增删改查

    前面介绍了Spring Boot 中的整合Thymeleaf前端html框架,同时也介绍了Thymeleaf 的用法.不清楚的朋友可以看看之前的文章:https://www.cnblogs.com/z ...

  3. Spring boot 入门三:SpringBoot用JdbcTemplates访问Mysql 实现增删改查

    建表脚本 -- create table `account`DROP TABLE `account` IF EXISTSCREATE TABLE `account` ( `id` int(11) NO ...

  4. ssm框架(Spring Springmvc Mybatis框架)整合及案例增删改查

    三大框架介绍 ssm框架是由Spring springmvc和Mybatis共同组成的框架.Spring和Springmvc都是spring公司开发的,因此他们之间不需要整合.也可以说是无缝整合.my ...

  5. ssm 框架实现增删改查CRUD操作(Spring + SpringMVC + Mybatis 实现增删改查)

    ssm 框架实现增删改查 SpringBoot 项目整合 一.项目准备 1.1 ssm 框架环境搭建 1.2 项目结构图如下 1.3 数据表结构图如下 1.4 运行结果 二.项目实现 1. Emplo ...

  6. Web框架之Django_02基本操作(Django项目启动配置、数据库连接、orm、增删改查)

    摘要: Django项目简单现实过程 pycharm连接数据库 Django之orm简单操作增删改查 一.新建Django项目.配置.设置: 新建Django项目:(为了熟悉Django操作,暂时全部 ...

  7. ASP.NET CORE系列【三】使用Entity Framework Core进行增删改查

    身份验证 以前我们熟悉的web.config中配置的form验证,现在没有了.我们来看看在Core里面如何配置: 首先需要NuGet安装一个包:Microsoft.AspNetCore.Authent ...

  8. Golang中map的三种声明方式和简单实现增删改查

    package main import ( "fmt" ) func main() { test3 := map[string]string{ "one": & ...

  9. spring boot+mybatis+mysql增删改查分页

    server: port: servlet: context-path: /springBootMybatis spring: datasource: name: test url: jdbc:mys ...

随机推荐

  1. 树莓派debian配置lamp[解决Apache不显示php网页]

    Apache + MySql + Php. 1.安装Apache Apache可以用下面的命令来安装 sudo apt-get install apache2 Apache默认路径是/var/www/ ...

  2. nyoj 49-开心的小明(动态规划, 0-1背包问题)

    49-开心的小明 内存限制:64MB 时间限制:1000ms Special Judge: No accepted:7 submit:11 题目描述: 小明今天很开心,家里购置的新房就要领钥匙了,新房 ...

  3. nyoj 36-最长公共子序列 (动态规划,DP, LCS)

    36-最长公共子序列 内存限制:64MB 时间限制:3000ms Special Judge: No accepted:18 submit:38 题目描述: 咱们就不拐弯抹角了,如题,需要你做的就是写 ...

  4. 01-MongoDB数据库基础

    一.MongoDB数据库基础 1.MongoDB数据库介绍 什么是MongoDB? MongoDB是非关系型数据库中的一种,是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情 ...

  5. Flex实现web版图片查看器

    项目需求: 在web端实现图片浏览,具有放大.缩小.滚轴放大缩小.移动.旋转以及范围控制. 成果图:

  6. 2019-9-25:渗透测试,基础学习,medusa爆破学习

    Medusa(美杜莎)暴力破解使用 该文章仅供学习,利用方法来自网络文章,仅供参考 一.简介 medusa(美杜莎)是一个速度快,支持大规模并行,模块化,爆破登陆,可以同时对多个主机,用户或是密码执行 ...

  7. 数据库求闭包,求最小函数依赖集,求候选码,判断模式分解是否为无损连接,3NF,BCNF

    1.说白话一点:闭包就是由一个属性直接或间接推导出的所有属性的集合. 例(1):   设有关系模式R(U,F),其中U={A,B,C,D,E,I},F={A→D,AB→E,BI→E,CD→I,E→C} ...

  8. nginx离线部署脚本

    #! /bin/bashbasepath=$(cd `dirname $0`; pwd)nginx_path=/usr/localfile_name=nginxecho "--------- ...

  9. 关于vue中的videoPlayer的src视频地址参数动态修改(网上一堆错误方法,被误导很久,自己找到了正确的方法,供大家借鉴)

    方法很简单:相信大家的问题应该是改变src的值吧,动态赋值这一步简单.this.playerOptions['sources'][0]['src'] 就是这一步解决提取src问题,主要部分用绿色框起来 ...

  10. centOS系统安装-RabbitMq

    前言 消息通知机制是我们在日常业务开发总常常都会遇到:在微服务架构里,消息也是必不可少的,我们可以借助它异步实现很多业务,就拿我们日常的购物需求来说,在我们下单支付之后,我们就可以通过消息机制来异步处 ...