A、CRUD
すべての1.1ユーザーを探します
// チェック @Test 公共 無効SELECT(){ // クエリのすべてのユーザー 一覧<ユーザー>ユーザー= userMapper.selectList(ヌル;) users.forEach(のSystem.out ::のprintlnを); }
結果
1.2 idで検索
@Test 公共 ボイドのselect(){ // 查のIDによって ユーザユーザー= userMapper.selectById(1L )。 System.out.println(ユーザ); }
結果
2.挿入
プロパティ(IDを含む)に設けられた2.1
// 增 @Test 公共 ボイド挿入(){ ユーザーユーザ = 新しいユーザー(6L、 "ウィンディ"、12、 "[email protected]" )。 int型私は= userMapper.insert(ユーザー); もし(!I = 0 ){ System.out.printlnは( "添加成功" ); ユーザuserWindy = userMapper.selectById(user.getId())。 System.out.println( "新用户名为:" + userWindy)。 } 他のSystem.out.println( "添加失败" )。 }
結果
部分的にのみ(IDが含まれていない)プロパティを設定2.2
@Test 公共 ボイド挿入(){ // ユーザのユーザ=新しいユーザー(6L、 "ウィンディ"、12、 "[email protected]")。 ユーザのユーザ= 新しいユーザー(); user.setName( "ウィンディ" )。 user.setAge( 12 )。 user.setEmail( "[email protected]" ); int型私は= userMapper.insert(ユーザ) のSystem.out.println(I)。 System.out.println( "新用户为:" + ユーザー)。 }
結果
2.3エラー数
自動ない値が挿入されていないが、0はIDが割り当てられ、一度エラーに挿入次いで
org.springframework.dao.DuplicateKeyException
初回
第2
理由:使用してエンティティクラスのユーザーID の長い元のデータ型を
解決:長い変更パッケージロング
3.更新
使用に注意してくださいupdateById ことで、オーダーIDの変更を
// 改 @Test 公共 のボイドの更新(){ ユーザのユーザ = 新しいユーザー(6L、 "乗って"、65、 "[email protected]" ); int型私は= userMapper.updateById(ユーザー); もし(!I = 0 ){ System.out.printlnは( "修改成功" ); ユーザuserRidden = userMapper.selectById(user.getId())。 System.out.println( "修改后用户为:" + userRidden)。 } 他のSystem.out.println( "修改失败" )。 }
結果
4.削除
// 删 @Test 公共 のボイド削除(){ int型 I = userMapper.deleteById(6L )。 もし(!I = 0 ){ System.out.printlnは( "删除成功" ); 一覧 <ユーザー>ユーザー= userMapper.selectList(ヌル); users.forEach(のSystem.out ::のprintln)。 } 他のSystem.out.println( "删除失败" )。 }
結果
第二に、拡大
選択1
1.1バッチクエリ
@Test 公共 ボイドのselect(){ // 查询1,2,3号用户 一覧<ユーザー>ユーザー= userMapper.selectBatchIds(は、Arrays.asList(1、2、3 ))。 users.forEach(のSystem.out ::のprintln); }
結果
1.2条件お問い合わせ
@Test 公共 無効selectByMap(){ HashMapの <文字列、オブジェクト>マップ= 新しい HashMapの<> (); // 自定义查询 map.put( "名前"、 "トム" ); リスト <ユーザー>ユーザー= userMapper .selectByMap(マップ) users.forEach(のSystem.out ::のprintln); }
結果
1.3ページングクエリ
コンフィギュレーションクラス内MybatisPlusConfig 追加ページネーションプラグイン
// タブプラグ @Bean 公共PaginationInterceptor paginationInterceptorは(){ 戻り 新しい新しいPaginationInterceptorを(); }
テスト
@Test 公共 無効selectByPage(){ ページ <ユーザー>ページ= 新しいページ<>(1,5 ); // 現在:当前页 // サイズ:页面大小 userMapper.selectPage(ページ、ヌル); 。page.getRecords()はforEach(System.outに::のprintln)。 }
結果
2.削除
削除2.1バッチ
@Test 公共 ボイド削除(){ // バルク削除 userMapper.deleteBatchIds(は、Arrays.asList(4L、5L、6L )); }
結果
2.2マップは削除しました
@Test 公共 ボイドdeleteByMap(){ HashMapの <文字列、OBJECT>マップ= 新しい HashMapの<> (); map.put( "名前"、 "ジャック" ); userMapper.deleteByMap(マップ) }
結果
2.3墓石
-
物理的に削除:データベースから直接削除します
-
トゥームストーン:データベースで除去されず、障害誘導する- (削除= 0 =削除> 1) 変数によって
例:管理者が削除されたレコードを表示することができます
削除されたデータベースを追加します。
ユーザー
package com.zy.pojo; import com.baomidou.mybatisplus.annotation.*; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import java.util.Date; @Data @AllArgsConstructor @NoArgsConstructor public class User { //对应数据库的主键(UUID,自增id,雪花算法,redis,zookeeper) //@TableId(type = IdType.ID_WORKER) //全局唯一id @TableId(type = IdType.AUTO) //主键自增,对应数据库字段一定要自增 //@TableId(type = IdType.INPUT) //手动输入 private Long id; private String name; private Integer age; private String email; @TableLogic //逻辑删除 private Integer deleted; }
要点: @TableLogic
配置了添加逻辑删除插件
MybatisPlusConfig
//逻辑删除插件 @Bean public ISqlInjector sqlInjector() { return new LogicSqlInjector(); }
配置文件配置逻辑删除
application.properties
# 逻辑已删除值(默认为 1)
mybatis-plus.global-config.db-config.logic-delete-value= 1
# 逻辑未删除值(默认为 0)
mybatis-plus.global-config.db-config.logic-not-delete-value= 0
测试
@Test public void deleteLog(){ userMapper.deleteById(5L); }
结果
再查询被删用户
@Test public void select() { User user = userMapper.selectById(5L); System.out.println(user); }
结果