返回顶部
首页 > 资讯 > 精选 >springboot中如何通过整合Mapper实现单表操作
  • 928
分享到

springboot中如何通过整合Mapper实现单表操作

2023-06-08 05:06:09 928人浏览 八月长安
摘要

本文小编为大家详细介绍“SpringBoot中如何通过整合Mapper实现单表操作”,内容详细,步骤清晰,细节处理妥当,希望这篇“springboot中如何通过整合Mapper实现单表操作”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入

本文小编为大家详细介绍“SpringBoot中如何通过整合Mapper实现单表操作”,内容详细,步骤清晰,细节处理妥当,希望这篇“springboot中如何通过整合Mapper实现单表操作”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

1. 框架Maven部署安装

下载框架源码后,在项目根路径下执行mvn clean install可安装到本地Maven库。如果需要共享,且搭了Nexus私服,则在根路径pom.xml文件中添加distributionManagement配置,指定Nexus仓库分发地址,使用mvn clean deploy安装到远程maven仓库,如

<distributionManagement><repository><id>nexus-releases</id><url>Http://ip:port/repository/maven-releases/</url></repository><snapshotRepository><id>nexus-snapshots</id><url>http://ip:port/repository/maven-snapshots/</url></snapshotRepository></distributionManagement>

上述指定的repository需要在maven的全部配置文件settings.xml中有对应账号配置(id需要一一对应),如

<servers><server><id>nexus-snapshots</id><username>admin</username><passWord>xxx</password></server><server><id>nexus-releases</id><username>admin</username><password>xxx</password></server></servers>

2. pom.xml配置

项目中引入该数据库框架有三种方式:

  1. 直接引入 cn.jboost.springboot:tkmapper-spring-boot-starter(没有连接池)

  2. 直接引入 cn.jboost.springboot:druid-spring-boot-starter(druid连接池支持)

  3. 项目继承 cn.jboost.springboot:spring-boot-parent(使用的是druid连接池)

三种方式的pom.xml配置如下

#第一种方式<dependency><groupId>cn.jboost.springboot</groupId><artifactId>tkmapper-spring-boot-starter</artifactId><version>1.2-SNAPSHOT</version></dependency>#第二种方式<dependency><groupId>cn.jboost.springboot</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2-SNAPSHOT</version></dependency>#第三种方式<parent><groupId>cn.jboost.springboot</groupId><artifactId>spring-boot-parent</artifactId><version>1.2-SNAPSHOT</version><relativePath/> <!-- lookup parent from repository --></parent>

根据情况引入mysqlpostgresql的驱动依赖(其它数据库暂未做类型转换支持,未作测试

3. 配置数据源

如果使用druid连接池,则在application.yml配置文件中,加入如下数据源配置(推荐)

spring:datasource:druid:driver-class-name: com.Mysql.jdbc.Driverurl: jdbc:mysql://localhost:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=utf-8username: rootpassword:# 自定义配置initialSize: 2 # 初始化大小minIdle: 1 # 最小连接maxActive: 5 # 最大连接druidServletSettings:allow: 127.0.0.1deny:loginUsername: adminloginPassword: Passw0rdresetEnable: truedruidFilterSettings:exclusions: '*.js,*.gif,*.jpg,*.png,*.CSS,*.ico,/druid/*'maxWait: 60000 # 配置获取连接等待超时的时间timeBetweenEvictionRunsMillis: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒minEvictableIdleTimeMillis: 300000 # 配置一个连接在池中最小生存的时间,单位是毫秒validationQuery: SELECT 'x'testWhileIdle: truetestOnBorrow: falsetestOnReturn: falsepoolPreparedStatements: true # 打开PSCache,并且指定每个连接上PSCache的大小maxPoolPreparedStatementPerConnectionSize: 20filters: stat #,wall(添加wall代码里不能直接拼接sql,druid有sql注入校验) # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 # 通过connectProperties属性来打开mergeSql功能;慢SQL记录useGlobalDataSourceStat: true # 合并多个DruidDataSource的监控数据

如果不使用连接池,则配置相对简单,如下

spring:datasource:url: jdbc:mysql://localhost:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=utf-8username: rootpassword:driver-class-name: com.mysql.jdbc.Driver

4. 定义相应domain,mapper,service,controller各层对象

以demo为例(demo数据库脚本见resources/schema.sql),domain定义一个User类,

@Table(name = "user")@Getter@Setter@ToStringpublic class User extends AutoIncremenTKEyBaseDomain<Integer> {private String name;@ColumnType(jdbcType = JdbcType.CHAR)private Gender gender;private List<String> favor;private Map<String, String> address;public enum Gender{M,F}}

需要添加@Table注解指定数据库表名,可通过继承AutoIncrementKeyBaseDomain来实现自增主键,或UUIDKeyBaseDomain来实现UUID主键,如果自定义其它类型主键,则继承BaseDomain。

该框架Service层通用方法实现BaseService只支持单列主键,不支持组合主键(也不建议使用组合主键)

框架默认对List、Map等复杂类型属性会映射到mysql的JSON类型或postgresql的jsonb类型,如果某个属性不需要映射,可添加@Transient注解;枚举类型需添加@ColumnType指定jdbcType。

dao层定义UserMapper,

@Repositorypublic interface UserMapper extends BaseMapper<User> {}

BaseMapper默认实现了单表的增删改查及批量插入等功能,如需定义复杂查询,可在该接口中定义,然后通过mapper xml文件编写实现。

service层定义 UserService,继承了BaseService的通用功能(具体可查看源码),同样可在该类中自定义方法

@Servicepublic class UserService extends BaseService<Integer, User> {@Transactionalpublic void createWithTransaction(User user){create(user);//用于测试事务throw new RuntimeException("抛出异常,让前面的数据库操作回滚");}}

controller层定义 UserController,继承了BaseController的通用接口(具体可查看源码)

@RestController@RequestMapping("/user")public class UserController extends BaseController<Integer, User> {}

如上,只需要定义各层对应的接口或类,继承基础接口或类,便完成了用户基本的增删改查功能,不需要写一行具体的实现代码。

5. 测试、运行

示例中提供了两个新建用户的单元测试,参考SpringbootTkmapperApplicationTests类

运行,在主类上直接运行,然后浏览器里打开http://localhost:8080/user 则可列出单元测试中创建的用户(其它接口参考BaseController实现)

读到这里,这篇“springboot中如何通过整合Mapper实现单表操作”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。

--结束END--

本文标题: springboot中如何通过整合Mapper实现单表操作

本文链接: https://lsjlt.com/news/251825.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • springboot中如何通过整合Mapper实现单表操作
    本文小编为大家详细介绍“springboot中如何通过整合Mapper实现单表操作”,内容详细,步骤清晰,细节处理妥当,希望这篇“springboot中如何通过整合Mapper实现单表操作”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入...
    99+
    2023-06-08
  • SpringBoot整合TKMyBatis实现单表增删改查操作
    目录什么是TKMybatisSpringBoot整合TKMybatis实体类注解TKMapper接口如何使用基本增删改操作批量查询和删除批量添加自定义查询条件ExampleExamp...
    99+
    2023-01-03
    SpringBoot整合TKMyBatis增删改查 SpringBoot增删改查
  • SpringBoot中怎么通过整合Redis实现管道
    这篇文章给大家介绍SpringBoot中怎么通过整合Redis实现管道,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1. Redis 之管道(pipeline)执行一个Redis命令,Redis客户端和Redis服务器...
    99+
    2023-06-20
  • SpringBoot中通过AOP整合日志文件的实现
    目录1.导入相关的依赖 2.log4j2 日志文件 3.dao层的接口以及实现类 4.Service层业务实现类 5.Controller层接口控制类 6.编写业务类增强类,加入一个...
    99+
    2024-04-02
  • springboot整合EhCache实现单服务缓存的操作方法
    目录一、整合Spring Cache 与Ehcache二、缓存的使用方法三、缓存使用中的坑在Spring框架内我们首选Spring Cache作为缓存框架的门面,之所以说它是门面,是...
    99+
    2024-04-02
  • 使用Springboot整合GridFS实现文件操作
    目录GridFsOperations,实现GridFS文件上传下载删除上传下载删除功能实现测试上传下载删除GridFsOperations,实现GridFS文件上传下载删除 最近学习...
    99+
    2024-04-02
  • springboot整合shardingjdbc实现分库分表最简单demo
    目录一、概览1.1 简介1.2 对比1.3 分库分表场景1.4 非分片表处理方法1.5 技术栈二、 项目整合2.1 pom.xml2.2 jpa/mybatis项目其他调整 spri...
    99+
    2024-04-02
  • springboot中如何实现通过后台创建临时表
    这篇文章主要介绍了springboot中如何实现通过后台创建临时表,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。springboot 如何通过后台创建临时表其实创建临时表,跟...
    99+
    2023-06-20
  • springboot如何通过session实现单点登入详解
    目录我对于单点的理解效果图走起代码部分总结我对于单点的理解 正常的登录 进入自己系统的登录页面,输入用户名密码,登录系统。 单点登录 来到一个第三方的登录页面,输入用户名密码,在这个...
    99+
    2024-04-02
  • mysql中如何实现多表联合查询操作
    这篇文章将为大家详细讲解有关mysql中如何实现多表联合查询操作,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。MySQL多表联合查询语法:复制代码 代码如下...
    99+
    2024-04-02
  • springboot整合websocket如何实现群聊
    这篇文章将为大家详细讲解有关springboot整合websocket如何实现群聊,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。实现思路发送者向服务器发送大家早上好。其它客户端可以收到对应消息。项目展示通...
    99+
    2023-06-15
  • C语言如何实现单链表操作
    本篇内容介绍了“C语言如何实现单链表操作”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1 链表的概念及结构概念:链表是一种物理存储结构上非连...
    99+
    2023-06-29
  • JavaScript如何实现表单元素的操作
    本文小编为大家详细介绍“JavaScript如何实现表单元素的操作”,内容详细,步骤清晰,细节处理妥当,希望这篇“JavaScript如何实现表单元素的操作”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、for...
    99+
    2023-06-30
  • 如何通过VBS脚本操作注册表
    这篇文章给大家分享的是有关如何通过VBS脚本操作注册表的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。①创建主键、创建各类型的键值。 ②读取键值并分析键值类型。 ③枚举主键及键值。 ④判断键或键值是否存在。 ⑤查询...
    99+
    2023-06-08
  • JavaScript中怎么实现表单操作和表单域
    JavaScript中怎么实现表单操作和表单域,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、表单的获取方式1.docume...
    99+
    2024-04-02
  • spring boot怎么整合quartz实现通过页面操作管理定时任务
    这篇文章主要介绍“spring boot怎么整合quartz实现通过页面操作管理定时任务”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“spring boot怎么整合...
    99+
    2024-04-02
  • SpringBoot整合Elasticsearch实现索引和文档的操作方法
    目录1、SpringBoot整合Elasticsearch的步骤2、索引的操作2.1 索引存在验证2.2  创建索引2.3 删除索引3、文档的...
    99+
    2024-04-02
  • SpringBoot整合mybatis/mybatis-plus实现数据持久化的操作
    目录1. 创建数据表2. 打开 pom.xml,添加相关依赖3. 给application.properties添加数据库配置4. 新建 model/Person5. 新建 mapp...
    99+
    2022-11-13
    SpringBoot mybatis-plus数据持久化 SpringBoot mybatis数据持久化 SpringBoot数据持久化
  • SpringBoot如何实现整合微信支付
    这篇文章将为大家详细讲解有关SpringBoot如何实现整合微信支付,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.准备工作1.1 数据库表这里涉及微信支付一共两个表:订单表支付记录表1.2 实体类数据...
    99+
    2023-06-22
  • 如何进行SpringBoot整合JWT的实现
    这篇文章跟大家分析一下“如何进行SpringBoot整合JWT的实现”。内容详细易懂,对“如何进行SpringBoot整合JWT的实现”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习...
    99+
    2023-06-26
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作