springboot2.x整合tkmapper的示例代码

springboot整合tkmapper

1.导入pom依赖

1.1 导入springboot的parent依赖

<parent>
    <artifactId>spring-boot-starter-parent</artifactId>
    <groupId>org.springframework.boot</groupId>
    <version>2.1.9.RELEASE</version>
  </parent>

1.2 导入具体依赖

<dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
    </dependency>

    <!-- MySql -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.32</version>
    </dependency>
    <!-- druid连接池-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid-spring-boot-starter</artifactId>
      <version>1.1.10</version>
    </dependency>
    <!-- tkmapper-->
    <dependency>
      <groupId>tk.mybatis</groupId>
      <artifactId>mapper-spring-boot-starter</artifactId>
      <version>2.1.5</version>
    </dependency>
    <!-- pagehelper分页插件-->
    <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper-spring-boot-starter</artifactId>
      <version>1.2.10</version>
    </dependency>

    <!-- lombok -->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
    </dependency>

    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.68</version>
    </dependency>
  </dependencies>

2. 添加tkmapper数据库连接配置

创建application.yml配置类

spring:
 datasource:
  type: com.alibaba.druid.pool.DruidDataSource # 连接池指定 springboot2.02版本默认使用HikariCP 此处要替换成Druid
  driver-class-name: com.mysql.jdbc.Driver
  url: jdbc:mysql:///pethome?serverTimezone=Asia/Shanghai&characterEncoding=utf-8
  username: root
  password: qwe123
  druid:
   initial-size: 5 # 初始化时建立物理连接的个数
   min-idle: 5 # 最小连接池连接数量,最小空闲数量
   max-active: 20 # 最大连接池连接数量,最大活跃连接数
   max-wait: 60000 # 配置获取连接等待超时的时间
   timeBetweenEvictionRunsMillis: 60000
   minEvictableIdleTimeMillis: 300000
   validationQuery: SELECT 1
   testWhileIdle: true
   testOnBorrow: true
   testOnReturn: false
   poolPreparedStatements: true
   maxPoolPreparedStatementPerConnectionSize: 20
   filters: stat,wall
   connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
   stat-view-servlet:
    allow: 0.0.0.0 # 允许哪些IP访问druid监控界面,多个IP以逗号分隔
    login-username: admin # 设置登录帐号
    login-password: 123456 # 设置登录密码
    reset-enable: false # 是否允许重置数据
    # url-pattern: /database/* # 默认访问根路径是:/druid/;也可以自定义设置
# mybatis配置
mybatis:
 configuration:
  map-underscore-to-camel-case: true
  log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 设置控制台输入执行的sql语句
 type-aliases-package: org.example.model

# tkmapper配置
mapper:
 not-empty: false
 identity: mysql #指定tkmapper加载的数据库

3. 在启动类上添加扫描注解

MainApp.java

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import tk.mybatis.spring.annotation.MapperScan;

@SpringBootApplication
@MapperScan(basePackages = "org.example.mapper")
public class App {
  public static void main(String[] args) {
    SpringApplication.run(App.class);
  }
}

4.tkmapper的使用

4.1 创建mapper.java

public interface ProductMapper extends Mapper<TProduct> {
}

4.2 创建表对应的实体类TProduct

@Data
public class TProduct {
 @Id //指定主键的注解
 private Long id;
 private String name;
 private String resources;
 private Double saleprice;
 private java.util.Date offsaletime;
 private java.util.Date onsaletime;
 private Long state;
 private String costprice;
 private java.util.Date createtime;
 private Long salecount;
}

4.3 添加测试类,进行单表的CRUD操作

@SpringBootTest
@RunWith(SpringRunner.class)
public class AppTest {

  @Autowired
  private ProductMapper productMapper;

  @Test//查询所有
  public void findAll(){
    List<TProduct> tProducts = productMapper.selectAll();
    for (TProduct tProduct : tProducts) {
      System.out.println(tProduct);
    }
  }

  @Test
  public void insert(){
    TProduct product = new TProduct();
    product.setName("我是测试的");
    product.setCreatetime(new Date());
    product.setState(1L);

    productMapper.insert(product);
  }

  @Test
  public void updateById(){
    TProduct product = new TProduct();
    product.setId(174L);
    product.setName("我是测试");
    //如果修改时,只想改变更新的name值,其他值不改
    //下面这个方法,是无论修改的值是否为空,将全部修改
//    productMapper.updateByPrimaryKey(product);
    //下面的方法,只改非空的字段.
    //注意:tkmapper中,凡是方法名以Selective结尾的,就是在拼接动态sql
    //即,不更新非空的字段
    product.setCreatetime(new Date());
    productMapper.updateByPrimaryKeySelective(product);
  }

  @Test//删除操作
  public void delete(){
    productMapper.deleteByPrimaryKey(174L);
  }

4.4 多条件查询和分页查询

@SpringBootTest
@RunWith(SpringRunner.class)
public class QueryTest {
  @Autowired
  private ProductMapper productMapper;

  @Test //根据多条件动态查询
  public void queryByParam(){
    //多条件查询
    Example example = new Example(TProduct.class);
//    //添加第1个条件 name:模糊查询
//    example.and().andLike("name","%洗澡8%");
//
//    //添加第2个条件 :价格在100以内
//    example.and()
//        .andGreaterThanOrEqualTo("saleprice",0).andLessThanOrEqualTo("saleprice",100);
//
//    //添加第3个条件:状态 state =1
//    example.and().andEqualTo("state",1);
  //优化Sql中的括号 : 当多个条件如果是 平级,则不用example.and()去追加条件
    Example.Criteria and = example.and();//Criteria对象:就是用于拼接查询条件,每次执行example.and()或者example.or()将都会创建一个新的查询条件的拼接对象(意味着多一组())
    and.andLike("name","%洗澡8%").orEqualTo("state",1);
    //再创建一组新的区间查询条件,这个条件它要加(),所以你要重新通过 example对象获取
    example.and().andGreaterThanOrEqualTo("saleprice",0).andLessThanOrEqualTo("saleprice",100);

    List<TProduct> tProducts = productMapper.selectByExample(example);

    for (TProduct tProduct : tProducts) {
      System.out.println(tProduct);
    }
  }

  @Test //分页查询
  public void queryByPage(){
    //不带条件的分页查询

    //如果要进行分页查询,只需在调用查询的方法前,设置分页参数即可
    //特点注意:当前设置的分页参数,只适用于离它最近的这条查询
    PageHelper.startPage(1,3);
    //List<TProduct> tProducts = productMapper.selectAll();
    PageInfo<TProduct> pageInfo = new PageInfo<>(productMapper.selectAll());
    /*
      pageInfo中的常用的方法:
        总记录数:pageInfo.getTotal()
        总页数:pageInfo.getPages()
        每页的数据列表:pageInfo.getList()

     */

    System.out.println(pageInfo);
  }

4.5 添加数据后,立马得到添加数据的主键

当前这个主键是由数据库进行【自增长】设置的

在实体类的主键ID上添加如下配置

public class TProduct {
 @Id //指定主键的注解
 @GeneratedValue(strategy= GenerationType.IDENTITY)
 private Long id;

在需要获取的地方,直接调用get方法即可

 @Test //添加新数据后,获取 自增长主键
  public void insertAndGetId(){
    TProduct product = new TProduct();
    product.setName("我是测试的");
    product.setCreatetime(new Date());
    product.setState(1L);
    productMapper.insert(product);

    System.out.println(product.getId());

  }

到此这篇关于springboot2.x整合tkmapper的文章就介绍到这了,更多相关springboot2.x整合tkmapper内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringBoot 2.x 整合Lombok的方法示例

    简介 lombok是一个编译级别的插件,它可以在项目编译的时候生成一些代码.比如日常开发过程中需要生产大量的JavaBean文件,每个JavaBean都需要提供大量的get和set方法,如果字段较多且发生变动的话修改起来相对繁琐,相应的lombok可以通过注解(@getter,@setter)为我们省去手动创建getter和setter方法的麻烦,它能够在我们编译源码的时候自动帮我们生成getter和setter方法. 即它最终能够达到的效果是:在源码中没有getter和setter方法,但是在

  • springboot2.x整合shiro权限框架的使用

    序 在实际项目中,经常需要用到角色权限区分,以此来为不同的角色赋予不同的权利,分配不同的任务.比如,普通用户只能浏览:会员可以浏览和评论:超级会员可以浏览.评论和看视频课等:实际应用场景很多.毫不夸张的说,几乎每个完整的项目都会设计到权限管理. 在 Spring Boot 中做权限管理,一般来说,主流的方案是 Spring Security ,但是由于 Spring Security 过于庞大和复杂,只要能满足业务需要,大多数公司还是会选择 Apache Shiro 来使用. 一般来说,Spri

  • Spring Boot 2.X整合Spring-cache(让你的网站速度飞起来)

    计算机领域有人说过一句名言:"计算机科学领域的任何问题都可以通过增加一个中间层来解决",今天我们就用Spring-cache给网站添加一层缓存,让你的网站速度飞起来. 本文目录 一.Spring Cache介绍二.缓存注解介绍三.Spring Boot+Cache实战1.pom.xml引入jar包2.启动类添加@EnableCaching注解3.配置数据库和redis连接4.配置CacheManager5.使用缓存注解6.查看缓存效果7.注意事项 一.Spring Cache介绍 Sp

  • SpringBoot2.x 整合Spring-Session实现Session共享功能

    1.前言 发展至今,已经很少还存在单服务的应用架构,不说都使用分布式架构部署, 至少也是多点高可用服务.在多个服务器的情况下,Seession共享就是必须面对的问题了. 解决Session共享问题,大多数人的思路都是比较清晰的, 将需要共享的数据存在某个公共的服务中,如缓存.很多人都采用的Redis,手动将Session存在Redis,需要使用时,再从Redsi中读取数据.毫无疑问,这种方案是可行的,只是在手动操作的工作量确实不少. LZ在这里采用的Spring-Session来实现.它使用代理

  • springboot2.x整合tkmapper的示例代码

    springboot整合tkmapper 1.导入pom依赖 1.1 导入springboot的parent依赖 <parent> <artifactId>spring-boot-starter-parent</artifactId> <groupId>org.springframework.boot</groupId> <version>2.1.9.RELEASE</version> </parent> 1.

  • springboot2.0整合dubbo的示例代码

    写在前面: 使用springboot作为web框架,方便开发许多,做分布式开发,dubbo又不可少,那么怎么整合在一起呢, 跟我学一遍,至少会用 注意,springboot2.0和springboot1.x与dubbo整合不一样, 1.环境 1.新建一个空的maven项目,作为父工程,新建moudle,,service(接口层,及实现层,没有具体分,),web(web层,springboot项目) 项目结构如下 父pom如下 <properties> <project.build.sou

  • spring boot整合Swagger2的示例代码

    Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化RESTful风格的 Web 服务.总体目标是使客户端和文件系统作为服务器以同样的速度来更新.文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步.Swagger 让部署管理和使用功能强大的API从未如此简单. 1.代码示例 1).在pom.xml文件中引入Swagger2 <dependency> <groupId>io.springfox</groupId> <artifa

  • SpringBoot 整合 JMSTemplate的示例代码

    1.1 添加依赖   可以手动在 SpringBoot 项目添加依赖,也可以在项目创建时选择使用 ActiveMQ 5 自动添加依赖.高版本 SpringBoot (2.0 以上) 在添加 activemq 连接池依赖启动时会报 Error creating bean with name 'xxx': Unsatisfied dependency expressed through field 'jmsTemplate'; 可以将 activemq 连接池换成 jms 连接池解决. <depen

  • Springboot实现Shiro整合JWT的示例代码

    写在前面 之前想尝试把JWT和Shiro结合到一起,但是在网上查了些博客,也没太有看懂,所以就自己重新研究了一下Shiro的工作机制,然后自己想了个(傻逼)办法把JWT和Shiro整合到一起了 另外接下来还会涉及到JWT相关的内容,我之前写过一篇博客,可以看这里:Springboot实现JWT认证 Shiro的Session机制 由于我的方法是改变了Shiro的默认的Session机制,所以这里先简单讲一下Shiro的机制,简单了解Shiro是怎么确定每次访问的是哪个用户的 Servlet的Se

  • SpringBoot整合SpringDataRedis的示例代码

      本文介绍下SpringBoot如何整合SpringDataRedis框架的,SpringDataRedis具体的内容在前面已经介绍过了,可自行参考. 1.创建项目添加依赖   创建SpringBoot项目,并添加如下依赖: <dependencies> <!-- springBoot 的启动器 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId

  • SpringBoot整合ShardingSphere的示例代码

    目录 一.相关依赖 二.Nacos数据源配置 三.项目配置 四.验证 概要: ShardingSphere是一套开源的分布式数据库中间件解决方案组成的生态圈,它由Sharding-JDBC.Sharding-Proxy和Sharding-Sidecar(计划中)这3款相互独立的产品组成. 他们均提供标准化的数据分片.分布式事务和数据库治理功能,可适用于如Java同构.异构语言.云原生等各种多样化的应用场景. 官网地址:https://shardingsphere.apache.org/ 一.相关

  • SpringBoot整合MyBatis-Plus的示例代码

    目录 前言 源码 环境 开发工具 SQL脚本 正文 单工程 POM文件(注意) application.properties(注意) 自定义配置(注意) 实体类(注意) Mapper接口(注意) Service服务实现类(注意) Controller前端控制器(注意) SpringBoot启动类(注意) 启用项目,调用接口(注意) 多工程 commons工程-POM文件 MyBatis-Plus commons工程-system.properties commons工程- 自定义配置 commo

  • springboot 整合sentinel的示例代码

    目录 1. 安装sentinel 2.客户端连接 1. 安装sentinel 下载地址:https://github.com/alibaba/Sentinel/releases/tag/1.7.0 ,由于我无法下载,所以使用docker安装, yuchunfang@yuchunfangdeMacBook-Pro ~ % docker pull bladex/sentinel-dashboard:1.7.0 yuchunfang@yuchunfangdeMacBook-Pro ~ % docker

  • springboot 整合hbase的示例代码

    目录 前言 HBase 定义 HBase 数据模型 物理存储结构 数据模型 1.Name Space 2.Region 3.Row 4.Column 5.Time Stamp 6.Cell 搭建步骤 1.官网下载安装包: 2.配置hadoop环境变量 3.修改 hbase-env.cmd配置文件 4.修改hbase-site.xml 文件 5.启动hbase服务 6.hbase客户端测试 Java API详细使用 1.导入客户端依赖 2.DDL相关操作 3.DML相关操作 插入数据与查询数据 H

随机推荐