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内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

以上是 springboot2.x整合tkmapper的示例代码 的全部内容, 来源链接: utcz.com/z/355152.html

回到顶部