千家信息网

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

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本文小编为大家详细介绍"springboot中如何通过整合Mapper实现单表操作",内容详细,步骤清晰,细节处理妥当,希望这篇"springboot中如何通过整合Mapper实现单表操作"文章能帮助
千家信息网最后更新 2026年11月01日springboot中如何通过整合Mapper实现单表操作

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

1. 框架Maven部署安装

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

nexus-releaseshttp://ip:port/repository/maven-releases/nexus-snapshotshttp://ip:port/repository/maven-snapshots/

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

nexus-snapshotsadminxxxnexus-releasesadminxxx

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配置如下

#第一种方式cn.jboost.springboottkmapper-spring-boot-starter1.2-SNAPSHOT#第二种方式cn.jboost.springbootdruid-spring-boot-starter1.2-SNAPSHOT#第三种方式cn.jboost.springbootspring-boot-parent1.2-SNAPSHOT 

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

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 {private String name;@ColumnType(jdbcType = JdbcType.CHAR)private Gender gender;private List favor;private Map 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 {}

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

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

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

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

@RestController@RequestMapping("/user")public class UserController extends BaseController {}

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

5. 测试、运行

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

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

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

配置 数据 类型 接口 数据库 方式 框架 测试 功能 文件 支持 整合 属性 文章 源码 用户 项目 监控 运行 复杂 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 A股互联网金融科技公司 互联网是不是新科技 麻工互联网科技 互联网科技与金融科技 互联网 科技 杭州互联网科技公司 艾特科技互联网 互联网金融科技平台 深圳艾佳互联网科技 互联网金融监管科技 银川新华互联网科技职业技术培训学校图片 链环科技传统企业怎么转型互联网 中国互联网十大科技股排名 互联网行业科技股 烟台灵鸽互联网科技有限公司 无锡工业互联网科技有限公司 湖北辰鑫科技互联网 互联网领先科技活动 众联互联网络科技 前海云享互联网科技 港股互联网科技股 西安互联网科技 汉立互联网科技有限公司联系电话 成都玖崟互联网科技有限公司乐商圈怎么样 恒银科技与互联网金融 互联网金融科技名词解释 锡山区互联网智能科技产品供应 张家口科技产业互联网平台 美国五大互联网科技公司市值多少 广东猫王互联网科技有限公司电话
0