SpringBoot 整合MyBatis

整合MyBatis

官方文档:http://mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/

Maven仓库地址:https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter/2.1.3

image-20200728083023851

整合测试

  1. 导入 MyBatis 所需要的依赖(方式一)

    <dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.3</version>
    </dependency>
    

    方式二:
    在这里插入图片描述

  2. 配置数据库连接信息(不变)

    spring:datasource:username: rootpassword: 123456#?serverTimezone=UTC解决时区的报错url: jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8driver-class-name: com.mysql.cj.jdbc.Drivertype: com.alibaba.druid.pool.DruidDataSource#Spring Boot 默认是不注入这些属性值的,需要自己绑定#druid 数据源专有配置initialSize: 5minIdle: 5maxActive: 20maxWait: 60000timeBetweenEvictionRunsMillis: 60000minEvictableIdleTimeMillis: 300000validationQuery: SELECT 1 FROM DUALtestWhileIdle: truetestOnBorrow: falsetestOnReturn: falsepoolPreparedStatements: true#配置监控统计拦截的filters,stat:监控统计、log4j:日志记录、wall:防御sql注入#如果允许时报错  java.lang.ClassNotFoundException: org.apache.log4j.Priority#则导入 log4j 依赖即可,Maven 地址:https://mvnrepository.com/artifact/log4j/log4jfilters: stat,wall,log4jmaxPoolPreparedStatementPerConnectionSize: 20useGlobalDataSourceStat: trueconnectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500#properties方式spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/db_warehouse?serverTimezone=UTCspring.datasource.username=rootspring.datasource.password=123456#mybatis#指定sql映射文件位置mybatis.mapper-locations=classpath:mapper/*.xml#开启驼峰命名规则mybatis.configuration.map-underscore-to-camel-case=true#开启日志功能mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl#给实体起别名mybatis.type-aliases-package=com.liming.pojo
    
  3. 创建实体类,导入 Lombok!

    User.java

    package nuc.ss.pojo;import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;@Data
    @AllArgsConstructor
    @NoArgsConstructor
    public class User {private int id;private String name;private String pwd;
    }
    
  4. 创建mapper目录以及对应的 Mapper 接口

    UserMapper.java

    package nuc.ss.mapper;import nuc.ss.pojo.User;
    import org.apache.ibatis.annotations.Mapper;
    import org.springframework.stereotype.Repository;import java.util.List;//或在启动类上添加@MapperScan(basePackages = "com.liming.mapper")
    @Mapper// 这个注解表示了这是一个 mybatis 的 mapper 类
    public interface UserMapper {List<User> queryUserList();User queryUserById(int id);int addUser(User user);int updateUser(User user);int deleteUser(int id);
    }
    
  5. 对应的Mapper映射文件

    UserMapper.xml

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <!--namespace=绑定一个对应的Dao/Mapper接口-->
    <mapper namespace="nuc.ss.mapper.UserMapper"><select id="queryUserList" resultType="User">select * from mybatis.user;</select><select id="queryUserById" resultType="User">select * from mybatis.user where id = #{id};</select><insert id="addUser" parameterType="User">insert into mybatis.user (id, name, pwd) values (#{id},#{name},#{pwd});</insert><update id="updateUser" parameterType="User">update mybatis.user set name=#{name},pwd = #{pwd} where id = #{id};</update><delete id="deleteUser" parameterType="int">delete from mybatis.user where id = #{id}</delete>
    </mapper>
    
  6. 编写部门的 UserController 进行测试!

    @RestController
    public class UserController {@Autowiredprivate UserMapper userMapper;@GetMapping("/queryUserList")public List<User> queryUserList() {List<User> userList = userMapper.queryUserList();for (User user : userList) {System.out.println(user);}return userList;}//添加一个用户@GetMapping("/addUser")public String addUser() {userMapper.addUser(new User(7,"阿毛","123456"));return "ok";}//修改一个用户@GetMapping("/updateUser")public String updateUser() {userMapper.updateUser(new User(7,"阿毛","123456"));return "ok";}@GetMapping("/deleteUser")public String deleteUser() {userMapper.deleteUser(7);return "ok";}
    }
    

启动项目访问进行测试!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/36258.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构笔记--优先队列(大小根堆)经典题型

1--项目的最大利润 题目描述&#xff1a; 输入&#xff1a;正数数组 costs&#xff0c;costs[i] 表示项目 i 的花费&#xff1b;正数数组 profits&#xff0c;profits[i] 表示项目 i 的花费&#xff1b;正数 k 表示只能串行完成最多 k 个项目&#xff1b;m 表示拥有的资金&…

MySQL事务:确保数据完整性与并发性的关键

MySQL事务&#xff1a;确保数据完整性与并发性的关键 MySQL作为一种广泛使用的开源关系型数据库管理系统&#xff0c;具备强大的事务支持&#xff0c;以确保数据库操作的一致性、隔离性和持久性。本文将深入探讨MySQL中的事务概念、事务隔离级别以及事务的应用场景&#xff0c…

leetcode 516. 最长回文子序列(JAVA)题解

题目链接https://leetcode.cn/problems/longest-palindromic-subsequence/description/?utm_sourceLCUS&utm_mediumip_redirect&utm_campaigntransfer2china 目录 题目描述&#xff1a; 暴力递归&#xff1a; 动态规划&#xff1a; 题目描述&#xff1a; 给你一个…

Python学习过程笔记:主模块(main) 异常处理 命令行参数解析 日志记录 socket模块 类的私有方法 字节字符串

文章目录 1.Python中的主程序2.Python中的异常处理3.Python中的命令行参数解析4.Python中的日志记录5.网络编程socket模块6.Python中的私有方法7.Python中的字节字符串 1.Python中的主程序 if __name__ __main__在Python中&#xff0c;if __name__ __main__ 是一个常见的代码…

百日筑基篇——python爬虫学习(一)

百日筑基篇——python爬虫学习&#xff08;一&#xff09; 文章目录 前言一、python爬虫介绍二、URL管理器三、所需基础模块的介绍1. requests2. BeautifulSoup1. HTML介绍2. 网页解析器 四、实操1. 代码展示2. 代码解释1. 将大文件划分为小的文件&#xff08;根据AA的ID数量划…

简单认识Zabbix监控系统及配置

文章目录 一、zabbix概述1、定义2、zabbix监控原理3、监控对象4、zabbix的3种架构&#xff08;1&#xff09; C/S架构&#xff08;2&#xff09;分布式架构&#xff1a;zabbix-proxy-client架构&#xff08;3&#xff09; master-node-client架构 5、zabbix监控模式 二、部署za…

项目实战 — 消息队列(8){网络通信设计①}

目录 一、自定义应用层协议 &#x1f345; 1、格式定义 &#x1f345; 2、准备工作 &#x1f384;定义请求和响应 &#x1f384; 定义BasicArguments &#x1f384; 定义BasicReturns &#x1f345; 2、创建参数类 &#x1f384; 交换机 &#x1f384; 队列 &#x1f38…

【网络】传输层——TCP(滑动窗口流量控制拥塞控制延迟应答捎带应答)

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《网络》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 上篇文章对TCP可靠性机制讲解了一部分&#xff0c;这篇文章接着继续讲解。 &#x1f3a8;滑动窗口 在…

Springboot 实践(2)MyEclipse2019创建项目修改pom文件,加载springboot 及swagger-ui jar包

MyEclipse2019创建工程之后&#xff0c;需要添加Springboot启动函数、添加application.yml配置文件、修改pom文件添加项目使用的jar包。 添加Springboot启动函数 创建文件存储路径 &#xff08;1&#xff09;右键单击“src/main/java”文件夹&#xff0c;弹出对话框输入路径…

Android 简单的视频、图片压缩工具

首页需要压缩的工具包 1.Gradle implementation com.iceteck.silicompressorr:silicompressor:2.2.3 2.添加相关权限&#xff08;手机得动态申请权限&#xff09; <uses-permission android:name"android.permission.READ_EXTERNAL_STORAGE"/> <uses-p…

05 - 研究 .git 目录

查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;GIT常用场景- 目录 文章目录 1. HEAD2. config3. refs4. objects 1. HEAD 2. config 3. refs 4. objects Git对象一共有三种&#xff1a;数据对象 blob、树对象 tree以及提交对象 commit&#xff0c;这些对象都被保…

Vue 目录结构 vite 项目

Vue3 项目常用的目录结构和每个文件的作用【通过 vite 创建的项目】 vite目录结构&#xff1a; dist // 打包后生成的文件目录 node_modules // 环境依赖 public // 公共资源目录 favicon.ico …

深入探析设计模式:工厂模式的三种姿态

深入探析设计模式&#xff1a;工厂模式的三种姿态 1. 简单工厂模式1.1 概念1.2 案例1.3 优缺点 2. 抽象工厂模式2.1 概念2.2 案例&#xff1a;跨品牌手机生产2.3 优缺点 3. 超级工厂模式3.1 概念3.2 案例&#xff1a;动物园游览3.3 优缺点 4. 总结 欢迎阅读本文&#xff0c;今天…

go入门实践四-go实现一个简单的tcp-socks5代理服务

文章目录 前言socks协议简介go实现一个简单的socks5代理运行与压测抓包验证 前言 SOCKS是一种网络传输协议&#xff0c;主要用于客户端与外网服务器之间通讯的中间传递。协议在应用层和传输层之间。 本文使用先了解socks协议。然后实现一个socks5的tcp代理服务端。最后&#…

英语词法——代词

代词是用来代替名词、起名词作用的短语、分句和句子的词。英语中代词根据其意义和作用可分为九类:人称代词、物主代词、反身代词、相互代词、指示代词、疑问代词、不定代词、关系代词和连接代词。 第一节 人称代词 一、人称代词的形式和用法 人称代词单数复数第一人称第二人…

【ARM 嵌入式 编译系列 4 -- GCC 编译属性 __read_mostly 详细介绍】

文章目录 __read_mostly 介绍__read_mostly 在 linux 中的使用.data.read_mostly 介绍 __read_mostly 介绍 __read_mostly 是一个在Linux内核编程中用到的宏定义&#xff0c;这是一个gcc编译器的属性&#xff0c;用于告诉编译器此变量主要用于读取&#xff0c;很少进行写入&am…

MYSQL中用字符串2022-07去匹配Date类型大于2022-07-01并小于2022-07-31

正文 需求上&#xff0c;是有个日期字符串&#xff0c;例如2022-07&#xff0c;代表着年月。数据库中表对于这个字段存的是年月日&#xff0c;例如&#xff1a;2022-07-15。 我希望的是&#xff1a;获取到2022-07-01到2022-07-31&#xff0c;之间的数据&#xff0c;条件是&…

21款美规奔驰GLS450更换中规高配主机,汉化操作更简单

很多平行进口的奔驰GLS都有这么一个问题&#xff0c;原车的地图在国内定位不了&#xff0c;语音交互功能也识别不了中文&#xff0c;原厂记录仪也减少了&#xff0c;使用起来也是很不方便的。 可以实现以下功能&#xff1a; ①中国地图 ②语音小助手&#xff08;你好&#xf…

【BASH】回顾与知识点梳理(二十六)

【BASH】回顾与知识点梳理 二十六 二十六. 二十一至二十五章知识点总结及练习26.1 总结26.2 模拟26.3 简答题 该系列目录 --> 【BASH】回顾与知识点梳理&#xff08;目录&#xff09; 二十六. 二十一至二十五章知识点总结及练习 26.1 总结 Linux 操作系统上面&#xff0c…

unittest单元测试

当你在编写测试用例时&#xff0c;可以使用Python内置的unittest模块来进行单元测试。下面是一个逐步指南&#xff0c;帮助你理解如何编写和运行基本的单元测试。 导入必要的模块&#xff1a; 首先&#xff0c;你需要导入unittest模块和需要测试的模块&#xff08;例如&#xf…