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數(shù)據庫連接配置
創(chuàng)建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 # 初始化時建立物理連接的個數(shù) min-idle: 5 # 最小連接池連接數(shù)量,最小空閑數(shù)量 max-active: 20 # 最大連接池連接數(shù)量,最大活躍連接數(shù) 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監(jiān)控界面,多個IP以逗號分隔 login-username: admin # 設置登錄帳號 login-password: 123456 # 設置登錄密碼 reset-enable: false # 是否允許重置數(shù)據 # url-pattern: /database/* # 默認訪問根路徑是:/druid/;也可以自定義設置 # mybatis配置 mybatis: configuration: map-underscore-to-camel-case: true log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 設置控制臺輸入執(zhí)行的sql語句 type-aliases-package: org.example.model # tkmapper配置 mapper: not-empty: false identity: mysql #指定tkmapper加載的數(shù)據庫
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 創(chuàng)建mapper.java
public interface ProductMapper extends Mapper<TProduct> { }
4.2 創(chuàng)建表對應的實體類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結尾的,就是在拼接動態(tài)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 //根據多條件動態(tài)查詢 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個條件:狀態(tài) state =1 // example.and().andEqualTo("state",1); //優(yōu)化Sql中的括號 : 當多個條件如果是 平級,則不用example.and()去追加條件 Example.Criteria and = example.and();//Criteria對象:就是用于拼接查詢條件,每次執(zhí)行example.and()或者example.or()將都會創(chuàng)建一個新的查詢條件的拼接對象(意味著多一組()) and.andLike("name","%洗澡8%").orEqualTo("state",1); //再創(chuàng)建一組新的區(qū)間查詢條件,這個條件它要加(),所以你要重新通過 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(){ //不帶條件的分頁查詢 //如果要進行分頁查詢,只需在調用查詢的方法前,設置分頁參數(shù)即可 //特點注意:當前設置的分頁參數(shù),只適用于離它最近的這條查詢 PageHelper.startPage(1,3); //List<TProduct> tProducts = productMapper.selectAll(); PageInfo<TProduct> pageInfo = new PageInfo<>(productMapper.selectAll()); /* pageInfo中的常用的方法: 總記錄數(shù):pageInfo.getTotal() 總頁數(shù):pageInfo.getPages() 每頁的數(shù)據列表:pageInfo.getList() */ System.out.println(pageInfo); }
4.5 添加數(shù)據后,立馬得到添加數(shù)據的主鍵
當前這個主鍵是由數(shù)據庫進行【自增長】設置的
在實體類的主鍵ID上添加如下配置
public class TProduct { @Id //指定主鍵的注解 @GeneratedValue(strategy= GenerationType.IDENTITY) private Long id;
在需要獲取的地方,直接調用get方法即可
@Test //添加新數(shù)據后,獲取 自增長主鍵 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內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
基于Ajax用戶名驗證、服務條款加載、驗證碼生成的實現(xiàn)方法
本篇文章對Ajax用戶名驗證、服務條款加載、驗證碼生成的實現(xiàn)方法,進行了詳細的分析介紹。需要的朋友參考下2013-05-05Springboot實現(xiàn)高吞吐量異步處理詳解(適用于高并發(fā)場景)
這篇文章主要介紹了Springboot實現(xiàn)高吞吐量異步處理詳解(適用于高并發(fā)場景),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-11-11SpringCloud Zuul過濾器實現(xiàn)登陸鑒權代碼實例
這篇文章主要介紹了SpringCloud Zuul過濾器實現(xiàn)登陸鑒權代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-03-03springboot的類加載器(org.springframework.boot.loader)過程詳解
這篇文章主要介紹了springboot的類加載器(org.springframework.boot.loader),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11