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());
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/243819.html
標籤:java
上一篇:Java期末考試編程題復習
