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>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.10</version>
</dependency>
<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数据库连接配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
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
login-username: admin
login-password: 123456
reset-enable: false
mybatis:
configuration:
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
type-aliases-package: org.example.model
mapper:
not-empty: false
identity: mysql
3. 在启动类上添加扫描注解
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("我是测试");
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);
Example.Criteria and = example.and();
and.andLike("name","%洗澡8%").orEqualTo("state",1);
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);
PageInfo<TProduct> pageInfo = new PageInfo<>(productMapper.selectAll());
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());
}