MyBatis-Plus学習ノート(1):環境構築および基本的なCRUD操作
7043 ワード
MyBatis-PlusはMyBatisのエンハンスメントツールで、MyBatisをベースにエンハンスメントを行うだけで変更せず、MyBatis-Plusを使用する場合、元のMybatis方式の使用に影響しません.
SpringBoot+MyBatis-Plus環境構築
SQLスクリプト:
依存を追加するには、次のようにします(Mybatisの依存を追加する必要はありません):
application.yml:
メイン・プログラム・クラス:
UserMapperインタフェース:
UserMapperインタフェースは、BaseMapperインタフェースを継承し、テーブルに対応する汎用エンティティクラスを指定する必要があります.
エンティティークラスUser:
MyBatis-Plusのデフォルトでは、下線でアルパカに名前を付けたマッピング規則を使用して、テーブルとエンティティークラス名、およびテーブルのカラム名とエンティティークラスフィールドのマッピングを処理します.デフォルトのルールが適用されない場合は、注釈@Table Nameを使用してテーブル名を指定し、@Table Idおよび@Table Fieldを使用してプライマリ・キー列および非プライマリ・キー列の列名を指定するなど、マッピングを追加の構成で処理する必要があります.
@Table Idは、プライマリ・キーの生成ポリシーを指定することもできます.デフォルトの生成ポリシーはNONEで、ステータスがなく、プライマリ・キー・タイプが設定されていないことを示します.その他のポリシーの詳細はIdTypeを参照してください.
多くのテーブルが同じ接頭辞または同じプライマリ・キー生成ポリシーを有する場合、手動で注釈を追加することなく、グローバル構成を使用してテーブル接頭辞とプライマリ・キー・ポリシーを指定することができます.もちろん、少数の特殊な方法で指定することもできます.アプリケーション.yml:
基本的なCRUD操作
mapperの使用について.xmlのいくつかの構成
SpringBoot+MyBatis-Plus環境構築
SQLスクリプト:
CREATE TABLE `tb_user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`real_name` varchar(20) DEFAULT NULL,
`email` varchar(50) DEFAULT NULL,
`phone` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO tb_user (real_name,email,phone) VALUES (' ','[email protected]','18711111111');
INSERT INTO tb_user (real_name,email,phone) VALUES (' ','[email protected]','18322222222');
INSERT INTO tb_user (real_name,email,phone) VALUES (' ','[email protected]','18133333333');
INSERT INTO tb_user (real_name,email,phone) VALUES (' ','[email protected]','18344444444');
INSERT INTO tb_user (real_name,email,phone) VALUES (' ','[email protected]','18723232323');
依存を追加するには、次のようにします(Mybatisの依存を追加する必要はありません):
org.springframework.boot
spring-boot-starter
org.springframework.boot
spring-boot-starter-test
test
com.baomidou
mybatis-plus-boot-starter
3.3.1.tmp
mysql
mysql-connector-java
5.1.47
application.yml:
spring:
datasource:
url: jdbc:mysql://localhost/plusdb?useUnicode=true&characterEncoding=UTF-8
username: root
password: 123456
driver-class-name: com.mysql.jdbc.Driver
# SQL ,com.cf.mpdm.mapper mapper
logging:
level:
com.cf.mpdm.mapper: debug
メイン・プログラム・クラス:
package com.cf.mpdm;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
// mapper
@MapperScan("com.cf.mpdm.mapper")
@SpringBootApplication
public class MpdmApplication {
public static void main(String[] args) {
SpringApplication.run(MpdmApplication.class, args);
}
}
UserMapperインタフェース:
package com.cf.mpdm.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cf.mpdm.entity.User;
public interface UserMapper extends BaseMapper {
}
UserMapperインタフェースは、BaseMapperインタフェースを継承し、テーブルに対応する汎用エンティティクラスを指定する必要があります.
エンティティークラスUser:
package com.cf.mpdm.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
// tb_user tb_ , User , @TableName
@TableName("tb_user")
public class User {
//
@TableId(type = IdType.AUTO)
private Integer id;
private String realName;
private String email;
private String phone;
//get/set ...
}
MyBatis-Plusのデフォルトでは、下線でアルパカに名前を付けたマッピング規則を使用して、テーブルとエンティティークラス名、およびテーブルのカラム名とエンティティークラスフィールドのマッピングを処理します.デフォルトのルールが適用されない場合は、注釈@Table Nameを使用してテーブル名を指定し、@Table Idおよび@Table Fieldを使用してプライマリ・キー列および非プライマリ・キー列の列名を指定するなど、マッピングを追加の構成で処理する必要があります.
@Table Idは、プライマリ・キーの生成ポリシーを指定することもできます.デフォルトの生成ポリシーはNONEで、ステータスがなく、プライマリ・キー・タイプが設定されていないことを示します.その他のポリシーの詳細はIdTypeを参照してください.
多くのテーブルが同じ接頭辞または同じプライマリ・キー生成ポリシーを有する場合、手動で注釈を追加することなく、グローバル構成を使用してテーブル接頭辞とプライマリ・キー・ポリシーを指定することができます.もちろん、少数の特殊な方法で指定することもできます.アプリケーション.yml:
mybatis-plus:
global-config:
db-config:
#
idType: AUTO
#
tablePrefix: tb_
基本的なCRUD操作
package com.cf.mpdm;
import com.cf.mpdm.entity.User;
import com.cf.mpdm.mapper.UserMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@SpringBootTest
class MpdmApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
public void testInsert(){
//INSERT INTO tb_user ( real_name, email, phone ) VALUES ( ?, ?, ? )
User user = new User();
user.setRealName(" ");
user.setEmail("[email protected]");
user.setPhone("18700000000");
userMapper.insert(user);
// ,
System.out.println(user.getId());
}
@Test
public void testDelete(){
// ID
//DELETE FROM tb_user WHERE id=?
userMapper.deleteById(6);
// id
//DELETE FROM tb_user WHERE id IN ( ? , ? )
/*List idList = new ArrayList<>();
idList.add(12);
idList.add(13);
userMapper.deleteBatchIds(idList);*/
// , real_name ,columnMap Key , 。
//DELETE FROM tb_user WHERE real_name = ?
/*Map columnMap = new HashMap<>();
columnMap.put("real_name", " ");
userMapper.deleteByMap(columnMap);*/
}
@Test
public void testUpdate(){
// id
//UPDATE tb_user SET real_name=? WHERE id=?
User user = new User();
user.setId(2);
user.setRealName(" ");
userMapper.updateById(user);
}
@Test
public void testSelect(){
// id
//SELECT id,real_name,email,phone FROM tb_user WHERE id=?
/*User user = userMapper.selectById(3);
System.out.println(user.getRealName());*/
// id
//SELECT id,real_name,email,phone FROM tb_user WHERE id IN ( ? , ? )
/*List idList = new ArrayList<>();
idList.add(3);
idList.add(4);
List userList = userMapper.selectBatchIds(idList);
System.out.println(userList.size());*/
//
//SELECT id,real_name,email,phone FROM tb_user WHERE real_name = ?
Map columnMap = new HashMap<>();
columnMap.put("real_name", " ");
List userList = userMapper.selectByMap(columnMap);
System.out.println(userList.size());
}
}
mapperの使用について.xmlのいくつかの構成
mybatis-plus:
# Mapper XML
mapperLocations: classpath:mapper/*.xml
# , , Mapper XML ,
typeAliasesPackage: com.cf.mpdm.entity