百度360必应搜狗淘宝本站头条
当前位置:网站首页 > IT知识 > 正文

软件测试 | Java数据持久化技术(java对象持久化到数据库)

liuian 2025-07-01 21:19 31 浏览

TKMyBatis 简介

TKMybatis 是基于 Mybatis 框架开发的一个工具,内部实现了对单表的基本数据操作,只需要简单继承 TKMybatis 提供的接口,就能够实现无需编写任何 sql 即能完成单表操作。

下面简单介绍下 MyBatis , MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高 级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过 简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

TKMyBatis快速开始

MAVEN依赖

<dependency>
 <groupId>org.mybatis.spring.boot</groupId>
 <artifactId>mybatis-spring-boot-starter</artifactId>
 <version>2.1.0</version>
 </dependency>
 <dependency>
 <groupId>tk.mybatis</groupId>
 <artifactId>mapper</artifactId>
 <version>4.0.3</version>
 </dependency>
 <dependency>
 <groupId>tk.mybatis</groupId>
 <artifactId>mapper-spring-boot-starter</artifactId>
 <version>2.0.3</version>
 </dependency>
 <dependency>
 <groupId>mysql</groupId>
 <artifactId>mysql-connector-java</artifactId>
 <scope>runtime</scope>
 </dependency>

在启动类中配置MAPPERSCAN扫描

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import tk.mybatis.spring.annotation.MapperScan;
@SpringBootApplication
@MapperScan("com.hogwartsmini.demo.dao")
public class DemoApplication {
 public static void main(String[] args) {
 SpringApplication.run(DemoApplication.class, args);
}

}

实体类中使用

在实体类中,常用的注解和意义为:

Table:描述数据库表信息,主要属性有 name(表名)、schema、catalog、uniqueConstraints 等。

Id:指定表主键字段,没有属性值。

Column:描述数据库字段信息,主要属性有 name(字段名)、columnDefinition、insertable、length、 nullable(是否可为空)、precision、scale、table、unique、updatable 等。

ColumnType:描述数据库字段类型,可对一些特殊类型作配置,进行特殊处理,主要属性有 jdbcType、column、typeHandler 等。

DAO 中使用

  • 创建业务 Mapper 公共接口

首先创建一个公共接口,继承 Mapper, MySqlMapper, IdsMapper 三个类,用于后续业务 Mapper 接口 直接实现。

import tk.mybatis.mapper.common.IdsMapper;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;
public interface MySqlExtensionMapper<T> extends Mapper<T>, MySqlMapper<T>,
IdsMapper<T> {
}
  • 创建业务Mapper接口

创建
HogwartsTestUserMapper.java接口

import com.hogwartsmini.demo.common.MySqlExtensionMapper;
import com.hogwartsmini.demo.entity.HogwartsTestUser;
import org.springframework.stereotype.Repository;
@Repository
public interface HogwartsTestUserMapper extends
MySqlExtensionMapper<HogwartsTestUser> {

}

SERVICE层中使用

  • 查询

SPRING BOOT配置文件

spring:
 application:
 name: aitest
 #数据库配置信息
 datasource:
 url: jdbc:mysql://localhost:3306/aitest_mini?
allowMultiQueries=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/
Shanghai
 username: hogwarts
 password: db@hogwarts
 driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
 mapper-locations: classpath:mapper/*.xml
 type-aliases-package: com.hogwartstest.aitestmini.entity
 configuration:
 mapUnderscoreToCamelCase: true
logging:
 level:
 com.hogwartstest.aitestmini.dao: debug #打印sql

示例表结构

CREATE TABLE `hogwarts_test_user` (
 `id` int NOT NULL AUTO_INCREMENT COMMENT '主键',
 `user_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT
NULL COMMENT '用户名',
 `password` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT
NULL COMMENT '密码',
 `email` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT
NULL COMMENT '邮箱',
 `auto_create_case_job_name` varchar(50) CHARACTER SET utf8mb4 COLLATE
utf8mb4_general_ci DEFAULT NULL COMMENT '自动生成用例job名称 不为空时表示已经创建
job',
 `start_test_job_name` varchar(50) CHARACTER SET utf8mb4 COLLATE
utf8mb4_general_ci DEFAULT NULL COMMENT '执行测试job名称 不为空时表示已经创建job',
 `default_jenkins_id` int DEFAULT NULL COMMENT '默认Jenkins服务器',
 `create_time` datetime NOT NULL COMMENT '创建时间',
 `update_time` datetime NOT NULL COMMENT '更新时间',
 PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4
COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='用户表';

CONTROLLER代码

import com.hogwartsmini.demo.entity.HogwartsTestUser;
import com.hogwartsmini.demo.service.HogwartsTestUserService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
 * @Author tlibn
 * @Date 2020/7/16 17:14
 **/
@Api(tags = "霍格沃兹测试学院-用户管理模块")
@RestController
@RequestMapping("hogwartsUser")
public class HogwartsTestUserDbController {
 @Autowired
 private HogwartsTestUserService hogwartsTestUserService;
 @ApiOperation("用户注册")
 @PostMapping("register")
 public HogwartsTestUser register(
 @RequestBody HogwartsTestUser hogwartsTestUser){
 return hogwartsTestUserService.save(hogwartsTestUser);
 }
 @ApiOperation("用户信息修改接口")
 @PutMapping()
 public HogwartsTestUser updateUserInfo(
 @RequestBody HogwartsTestUser hogwartsTestUser){
 return hogwartsTestUserService.update(hogwartsTestUser);
 }
 @ApiOperation("根据用户id删除用户信息")
 @DeleteMapping("{userId}")
 public Integer delete(@PathVariable("userId") Integer userId){
 return hogwartsTestUserService.delete(userId);
 }
 @ApiOperation("根据用户名查询")
 @GetMapping("byName")
 public List<HogwartsTestUser> getByName(
 @RequestParam("userName") String userName){
HogwartsTestUser hogwartsTestUser = new HogwartsTestUser();
 hogwartsTestUser.setUserName(userName);
 return hogwartsTestUserService.getByName(hogwartsTestUser);
 }

HOGWARTSTESTUSERSERVICE代码

import com.hogwartsmini.demo.entity.HogwartsTestUser;
import java.util.List;
public interface HogwartsTestUserService {
 /**
 * 保存
 * @param hogwartsTestUser
 * @return
 */
 HogwartsTestUser save(HogwartsTestUser hogwartsTestUser);
 /**
 * 更新
 * @param hogwartsTestUser
 * @return
 */
 HogwartsTestUser update(HogwartsTestUser hogwartsTestUser);
 /**
 * 根据用户名查询
 * @param hogwartsTestUser
 * @return
 */
 List<HogwartsTestUser> getByName(HogwartsTestUser hogwartsTestUser);
 /**
 * 根据用户id删除用户信息
 * @param userId
 * @return
 */
 Integer delete(Integer userId);
}


HOGWARTSTESTUSERSERVICEIMPL代码

import com.hogwartsmini.demo.dao.HogwartsTestUserMapper;
import com.hogwartsmini.demo.entity.HogwartsTestUser;
import com.hogwartsmini.demo.service.HogwartsTestUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
 * @Author tlibn
 * @Date 2020/7/17 11:03
 **/
@Service
public class HogwartsTestUserServiceImpl implements HogwartsTestUserService {
@Autowired
 private HogwartsTestUserMapper hogwartsTestUserMapper;
 /**
 * 保存
 *
 * @param hogwartsTestUser
 * @return
 */
 @Override
 public HogwartsTestUser save(HogwartsTestUser hogwartsTestUser) {
 hogwartsTestUser.setCreateTime(new Date());
 hogwartsTestUser.setUpdateTime(new Date());
 hogwartsTestUserMapper.insertUseGeneratedKeys(hogwartsTestUser);
 return hogwartsTestUser;
 }
 /**
 * 更新
 *
 * @param hogwartsTestUser
 * @return
 */
 @Override
 public HogwartsTestUser update(HogwartsTestUser hogwartsTestUser) {
 hogwartsTestUser.setCreateTime(new Date());
 hogwartsTestUser.setUpdateTime(new Date());
 hogwartsTestUserMapper.updateByPrimaryKeySelective(hogwartsTestUser);
 return hogwartsTestUser;
 }
 /**
 * 根据用户名查询
 *
 * @param hogwartsTestUser
 * @return
 */
 @Override
 public List<HogwartsTestUser> getByName(HogwartsTestUser hogwartsTestUser) {
 List<HogwartsTestUser> hogwartsTestUserList =
hogwartsTestUserMapper.select(hogwartsTestUser);
 return hogwartsTestUserList;
 }
 /**
 * 根据用户id删除用户信息
 *
 * @param userId
 * @return
 */
 @Override
 public Integer delete(Integer userId) {
 HogwartsTestUser hogwartsTestUser = new HogwartsTestUser();
 hogwartsTestUser.setId(userId);
 hogwartsTestUserMapper.delete(hogwartsTestUser);
 return userId;
 }
}

使用POSTMAN测试增删改查

新增

POSThttp://1270.0.1:8081/hogwartsUser/register

请求参数

{
 "userName": "霍格沃兹test123",
 "password": "test123"
}

响应参数

{
 "id": 15,
 "userName": "霍格沃兹test123",
 "password": "test123",
 "email": null,
 "autoCreateCaseJobName": null,
 "startTestJobName": null,
 "defaultJenkinsId": null,
 "createTime": "2021-04-14T09:37:58.358+00:00",
 "updateTime": "2021-04-14T09:37:58.358+00:00"
}

查询

GET
http://127.0.0.1:8081/hogwartsUser/byName?userName=霍格沃兹test123

请求参数

见请求地址中 userName = 霍格沃兹test123

响应参数

[
 {
 "id": 15,
 "userName": "霍格沃兹test123",
 "password": "test123",
 "email": null,
 "autoCreateCaseJobName": null,
 "startTestJobName": null,
 "defaultJenkinsId": null,
 "createTime": "2021-04-14T09:37:58.000+00:00",
 "updateTime": "2021-04-14T09:37:58.000+00:00"
 }
]

修改

PUT http://127.0.0.1:8081/hogwartsUser

请求参数

{
 "id": 15,
 "userName": "霍格沃兹test12345",
 "password": "test123"
}

响应参数

{
 "id": 15,
 "userName": "霍格沃兹test12345",
 "password": "test123",
 "email": null,
 "autoCreateCaseJobName": null,
 "startTestJobName": null,
 "defaultJenkinsId": null,
 "createTime": "2021-04-14T09:43:45.018+00:00",
 "updateTime": "2021-04-14T09:43:45.018+00:00"
}

删除

DELETE http://127.0.0.1:8081/hogwartsUser/15

请求参数

见请求地址中15

响应参数

15

搜索微信公众号:TestingStudio霍格沃兹的干货都很硬核

相关推荐

网络上xp是什么梗(xp是什么意思网络)

x是喜欢的意思,p是偏好的意思,原神xp党指的是一直在使用XP系统玩原神,不愿意更新系统的人。

电脑如何升级到win7

Windows7升级到Windows10系统需要使用官方的升级功能完成,以下是具体的操作方法:?1、在微软Windows10网站下载系统版本工具,完成右键以管理员身份打开【MediaCreationT...

手机下载pe启动盘(手机pe启动盘制作工具)

使用手机制作电脑PE启动盘需要以下步骤:1.手机需要支持OTG功能,并插入U盘。2.下载并安装一个名为“Rufus”的应用程序,它可以将U盘制作成可引导的PE启动盘。3.打开Rufus应用程序,...

2025年路由器推荐(2021年值得买的路由器)

水星AX18G这个无线速率是1800Mbps也属于“阉割”版的,跟标准的WiFi6还有一定差距。不过价格便宜,也可以作为WiFi6的尝试产品家里有宽带的话,买个无线路由器,约100元左右就行。每月交宽...

磁盘分区形式(磁盘分区形式MBR与GPT怎么转换)

怎么进行磁盘分区,可以参考以下步骤:步骤1.在“此电脑”上右键点击,选择“管理”,然后在“计算机管理”窗口的左侧列表中选择“磁盘管理”。在Windows10中也可以右键点击开始菜单,直接选择“磁盘...

固态硬盘使用寿命(固态硬盘使用寿命多久)

2012年9月买的联想U410超极本,到目前五年多,使用6300小时左右,电池损耗率只有15%+,固态硬盘升级120GB+原装的500GB机械硬盘,内存升级到16GB(上限了),加上Primocach...

general(general是什么意思)

GENERAL的意思是:1、adj.一般的,普通的;综合的;大体的2、n.一般;将军,上将;常规短语:1、generaldesign总体设计2、generalhospital总医院;综合医...

手机处理器排名最新图(手机处理器排行榜全部)

众所周知,手机端SOC很少在插电模式下运行,因此能耗比在移动端CPU性能中特别重要。本文整理了主流的SOC能耗比情况,给大家购买手机做一个参考。SOC能耗比较高的,包括麒麟810,骁龙625,麒麟65...

pdf版本怎么弄(怎么把word转为pdf)

回答如下:要将PDF文件恢复到以前的版本,您需要执行以下步骤:1.找到保存PDF文件的文件夹或位置。2.在该位置中找到以前的版本,这可能是备份文件、自动保存文件或之前保存的版本。3.如果您没有备...

怎么几个电脑共用一台打印机
  • 怎么几个电脑共用一台打印机
  • 怎么几个电脑共用一台打印机
  • 怎么几个电脑共用一台打印机
  • 怎么几个电脑共用一台打印机
笔记本电脑本地连接连不上(笔记本本地连接不上什么原因)
  • 笔记本电脑本地连接连不上(笔记本本地连接不上什么原因)
  • 笔记本电脑本地连接连不上(笔记本本地连接不上什么原因)
  • 笔记本电脑本地连接连不上(笔记本本地连接不上什么原因)
  • 笔记本电脑本地连接连不上(笔记本本地连接不上什么原因)
万能bt搜索引擎网站(bt万能搜索破解版)

最好用最全面的的磁力搜索引擎是磁力熊,因为它是一个内容丰富、还是功能最为强大的一个磁力搜索网站,通过它不仅仅可以搜索磁力熊磁力熊,是一个内容丰富、功能最为强大的一个磁力搜索网站,通过它不仅仅可以搜索...

苹果id注册官网登录(appleid官网注册账号)

浏览器访问申请AppleID官网注册  1、在浏览器地址栏上面输入:“https://appleid.apple.com/cn”,进入申请AppleID官网界面,点击下面的“创建AppleID...

苹果笔记本怎么下载windows系统

方法一:使用BootCamp方法二:使用虚拟机方法三:使用Wine简介BootCamp是苹果电脑自带的一个软件,可以帮助用户在Mac上安装Windows操作系统。虚拟机则是运行在Mac上的一个软件...

华硕电脑激活码(华硕电脑windows激活码在哪里)

你所说的应该是系统激活密钥吧华硕OEM密钥就行!HomePremium(家庭高级版):27GBM-Y4QQC-JKHXW-D9W83-FJQKDUltimate(旗舰版):6K2KY-BF...