springboot2.x整合tkmapper的示例代码

springboot整合tkmapper

1.导入pom依赖

1.1 导入springboot的parent依赖


    spring-boot-starter-parent
    org.springframework.boot
    2.1.9.RELEASE
  

1.2 导入具体依赖


    
      org.springframework.boot
      spring-boot-starter-web
    
    
      org.springframework.boot
      spring-boot-starter-test
    

    
    
      mysql
      mysql-connector-java
      5.1.32
    
    
    
      com.alibaba
      druid-spring-boot-starter
      1.1.10
    
    
    
      tk.mybatis
      mapper-spring-boot-starter
      2.1.5
    
    
    
      com.github.pagehelper
      pagehelper-spring-boot-starter
      1.2.10
    

    
    
      org.projectlombok
      lombok
    

    
      com.alibaba
      fastjson
      1.2.68
    
  

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 {
}

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 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 tProducts = productMapper.selectByExample(example);

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

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


    //如果要进行分页查询,只需在调用查询的方法前,设置分页参数即可
    //特点注意:当前设置的分页参数,只适用于离它最近的这条查询
    PageHelper.startPage(1,3);
    //List tProducts = productMapper.selectAll();
    PageInfo 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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

你可能感兴趣的:(springboot2.x整合tkmapper的示例代码)