SpringBoot整合tkMybatis基础教程- 通用mappper的使用

简介: SpringBoot整合tkMybatis基础教程- 通用mappper的使用

通用mapper


概念


使用Mybatis时,大的问题是,要写大量的重复SQL语句在xml文件中,除了特殊的业务逻辑SQL语句之外,还有大量结构类似的增删改查SQL。而且,当数据库表结构改动时,对应的所有SQL以及实体类都需要更改。这大量增 加了程序员的负担。避免重复书写CRUD映射的框架有两个


  • 通用mybatis(tk mybatis)
  • mybatis plus,通能更加强大

依赖

通用Mapper的作者也为自己的插件编写了启动器,我们直接引入即

   <!-- 添加了tkmybatis的启动器依赖可以注释掉原本mybatis的依赖-->
   <!--<dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.4</version>
        </dependency>-->
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>2.0.2</version>
        </dependency>


实体类

tk mybatis 实体类使用的注解是jpa注解

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Data
@NoArgsConstructor
@AllArgsConstructor
@ToString
@Table
public class Admin {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    private String account;
    private String password;
}


注意事项:


1.默认表名=类名,字段名=属性名

2.表名可以使用 @Table(name = “tableName”) 进行指定 ,如果表名和实体类名相同可以不加name属性

3.@Column(name = “fieldName”) 指定 ,如果字段名和属性名相同可以不加属性name

4.使用 @Transient 注解表示跟字段不进行映射

5.主键id必须要 @Id 使用指定,以及@GeneratedValue(strategy = GenerationType.IDENTITY)表示主键自增策略

不需要做任何配置就可以使用了

持久层

import com.kaikeba.entity.Admin;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
@Repository
public interface AdminMapper extends Mapper<Admin> {
    @Select("select * from admin")
    public List<Admin> findAll();
}

1、必须继承 tk mybatis提供的Mapper类,以及使用需要操作的bean类作为泛型参数

2、继承完也可以自行添加数据库操作


一旦继承了Mapper,继承的Mapper就拥有了Mapper所有的通用方法:


Select


方法: List select(T record);

说明:根据实体中的属性值进行查询,查询条件使用等号


方法: T selectByPrimaryKey(Object key);

说明:根据主键字段进行查询,方法参数必须包含完整的主键属性, 查询条件使用等号


方法: List selectAll();

说明:查询全部结果,select(null)方法能达到同样的效果


方法: T selectOne(T record);

说明:根据实体中的属性进行查询,只能有一个返回值,有多个结果是抛出异 常,查询条件使用等号


方法: int selectCount(T record);

说明:根据实体中的属性查询总数,查询条件使用等号 Insert


方法: int insert(T record);

说明:保存一个实体,null的属性也会保存,不会使用数据库默认值 方法: int insertSelective(T record); 说明:保存一个实体,null的属性不会保存,会使用数据库默认值


Update


方法: int updateByPrimaryKey(T record);

说明:根据主键更新实体全部字段,null值会被更新


方法: int updateByPrimaryKeySelective(T record);

说明:根据主键更新属性不为null的值


Delete


方法: int delete(T record);

说明:根据实体属性作为条件进行删除,查询条件使用等号


方法: int deleteByPrimaryKey(Object key);

说明:根据主键字段进行删除,方法参数必须包含完整的主键属性


Example方法


方法: List selectByExample(Object example);

说明:根据Example条件进行查询 重点:这 个查询支持通过 Example 类指定查询列,通过 selectProperties 方法指定查询列


方法: int selectCountByExample(Object example);

说明:根据Example条件进行查询总数


方法: int updateByExample(@Param(“record”) T record, @Param(“example”) Object example);

说明:根据 Example条件更新实体 record 包含的全部属性,null值会被更新


方法: int updateByExampleSelective(@Param(“record”) T record, @Param(“example”) Object example);

说明:根据Example条件更新实体 record 包含的不是null的属性值


方法: int deleteByExample(Object example);

说明:根据Example条件删除数据


启动类

注意:必须使用tk mybatis的MapperScan

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


相关文章
|
SQL XML druid
Spring Boot 整合 TKMybatis 与 PageHelper,Hikari连接池
TKMybatis与Hikari在以往项目使用并不多,前段时间看网络视频学习介绍了这两个东西也就亲手试了一下,感觉还可以,并没有很复杂,上手简单。
Spring Boot 整合 TKMybatis 与 PageHelper,Hikari连接池
|
4月前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的服装商城管理系统
基于Java+Springboot+Vue开发的服装商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的服装商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
212 2
基于Java+Springboot+Vue开发的服装商城管理系统
|
3月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
219 1
|
4月前
|
前端开发 JavaScript Java
SpringBoot项目部署打包好的React、Vue项目刷新报错404
本文讨论了在SpringBoot项目中部署React或Vue打包好的前端项目时,刷新页面导致404错误的问题,并提供了两种解决方案:一是在SpringBoot启动类中配置错误页面重定向到index.html,二是将前端路由改为hash模式以避免刷新问题。
378 1
|
2月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
148 62
|
1月前
|
存储 JavaScript 前端开发
基于 SpringBoot 和 Vue 开发校园点餐订餐外卖跑腿Java源码
一个非常实用的校园外卖系统,基于 SpringBoot 和 Vue 的开发。这一系统源于黑马的外卖案例项目 经过站长的进一步改进和优化,提供了更丰富的功能和更高的可用性。 这个项目的架构设计非常有趣。虽然它采用了SpringBoot和Vue的组合,但并不是一个完全分离的项目。 前端视图通过JS的方式引入了Vue和Element UI,既能利用Vue的快速开发优势,
130 13
|
1月前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
|
2月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
183 2
|
2月前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
4月前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的大学竞赛报名管理系统
基于Java+Springboot+Vue开发的大学竞赛报名管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的大学竞赛报名管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
250 3
基于Java+Springboot+Vue开发的大学竞赛报名管理系统

热门文章

最新文章