【Mybatis】mybatis-plus簡単まとめ
7054 ワード
新年おめでとうございます.新しい年の私の座右の銘は:勉強は難しいことではありません.難しいのは毎日勉強することです.2020年にしっかりと自分を計画して、前進を続けます!
Mybatis Plus簡単まとめ
プロジェクトではmybatisをormフレームワークとして使用することが多く、Mybatis plusと組み合わせて使用することが多い.
Mybatis Plusとは何ですか?
MyBatis-Plus(略称MP)はMyBatisのエンハンスメントツールであり、MyBatisをベースにエンハンスメントのみを行い変更せず、開発を簡素化し、効率を向上させるために生まれた.簡単に言えばMybatis Plusは開発者の生産性を高めただけで、本当にデータベースとインタラクティブなのはMybatisです.
Quick startデータベース を作成する. Spring Bootプロジェクトを迅速に構築しpom.xmlに以下の依存 を加えるはアプリケーションにあります.propertiesには、次の構成 が追加されています. Userエンティティークラス を作成する UserMapper を作成する
UserMapperはBaseMapperを継承していることがわかります.BaseMapperはJpaのRepositoryに相当し、よく使われる方法をパッケージ化しています. Testメソッド の記述
Result:
簡単じゃないですか、自分で比較的簡単なSQLを書く必要はありません.
Mybatis Plus Insert
Result:
挿入に成功し、idに自動的に値を付与していることがわかります.これはどういうことですか.MPは自動的にIdWorkerをカプセル化してくれたからですjava.分布式の子供靴を習ったことがあると信じています.これはよく知られていません.私たちが挿入したときに自分がプライマリ・キーSetの値になります.では、idWorkを使用してidを生成したくない場合はどうすればいいのでしょうか.
id生成ポリシー
Userを変更します.java
IdTypeは以下の6種類が可能です.
Update
updateも実は簡単です
重点自動塗りつぶし
Insertとupdateの場合、create_をデフォルトで挿入することがよくあります.time,update_time,is_deleted. Userテーブルの変更
UserMetaObjectHandlerの追加MetaObjectHandlerの実装
Userを追加します.JAvaフィールド
Insertメソッドとupdateメソッドを再実行すればよい
Delete
Select
実はselectも簡単でmybatis plusが提供している方法を見ればわかります idクエリ を介して idバッチクエリ 条件クエリはMap を通過するページングクエリ
Mybatis Plus簡単まとめ
プロジェクトではmybatisをormフレームワークとして使用することが多く、Mybatis plusと組み合わせて使用することが多い.
Mybatis Plusとは何ですか?
MyBatis-Plus(略称MP)はMyBatisのエンハンスメントツールであり、MyBatisをベースにエンハンスメントのみを行い変更せず、開発を簡素化し、効率を向上させるために生まれた.簡単に言えばMybatis Plusは開発者の生産性を高めただけで、本当にデータベースとインタラクティブなのはMybatisです.
Quick start
mybatis_plus
およびuser
テーブルCREATE TABLE user
(
id BIGINT(20) NOT NULL COMMENT ' ID',
name VARCHAR(30) NULL DEFAULT NULL COMMENT ' ',
age INT(11) NULL DEFAULT NULL COMMENT ' ',
email VARCHAR(50) NULL DEFAULT NULL COMMENT ' ',
PRIMARY KEY (id)
);
DELETE FROM user;
INSERT INTO user (id, name, age, email)
VALUES
(1, 'Jone', 18, '[email protected]'),
(2, 'Jack', 20, '[email protected]'),
(3, 'Tom', 28, '[email protected]'),
(4, 'Sandy', 21, '[email protected]'),
(5, 'Billie', 24, '[email protected]');
mysql
mysql-connector-java
com.baomidou
mybatis-plus-boot-starter
3.0.5
# mysql 8.0 , Driverclass url
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=root
server.port=8081
#
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
@Data // Lombok
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
import com.amber.learnmore.entity.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Component;
@Component
public interface UserMapper extends BaseMapper {
}
UserMapperはBaseMapperを継承していることがわかります.BaseMapperはJpaのRepositoryに相当し、よく使われる方法をパッケージ化しています.
@SpringBootTest
class LearnmoreApplicationTests {
@Autowired
UserMapper userMapper;
@Test
void contextLoads() {
List users = userMapper.selectList(null);
users.forEach(System.out::println);
}
}
Result:
User(id=1, name=Jone, age=18, [email protected])
User(id=2, name=Jack, age=20, [email protected])
User(id=3, name=Tom, age=28, [email protected])
User(id=4, name=Sandy, age=21, [email protected])
User(id=5, name=Billie, age=24, [email protected])
簡単じゃないですか、自分で比較的簡単なSQLを書く必要はありません.
Mybatis Plus Insert
@Test
void insert() {
User user = new User();
user.setName("Helen");
user.setAge(16);
user.setEmail("[email protected]");
int result = userMapper.insert(user);
System.out.println(result);
System.out.println(user);
}
Result:
1
User(id=1213699960072052738, name=Helen, age=16, [email protected])
挿入に成功し、idに自動的に値を付与していることがわかります.これはどういうことですか.MPは自動的にIdWorkerをカプセル化してくれたからですjava.分布式の子供靴を習ったことがあると信じています.これはよく知られていません.私たちが挿入したときに自分がプライマリ・キーSetの値になります.では、idWorkを使用してidを生成したくない場合はどうすればいいのでしょうか.
id生成ポリシー
Userを変更します.java
@TableId(type = IdType.AUTO)
private Long id;
IdTypeは以下の6種類が可能です.
AUTO(0),
NONE(1),
INPUT(2),
ID_WORKER(3), , id
UUID(4), UUID
ID_WORKER_STR(5); // ID
Update
updateも実は簡単です
@Test
void update() {
User user = userMapper.selectById(1);
user.setName("amber");
int i = userMapper.updateById(user);
System.out.println(i);
}
重点自動塗りつぶし
Insertとupdateの場合、create_をデフォルトで挿入することがよくあります.time,update_time,is_deleted. Userテーブルの変更
ALTER TABLE `mybatis_plus`.`user`
ADD COLUMN `create_time` DATETIME NULL AFTER `email`,
ADD COLUMN `update_time` DATETIME NULL AFTER `create_time`,
ADD COLUMN `is_deleted` TINYINT(1) NULL AFTER `update_time`;
UserMetaObjectHandlerの追加MetaObjectHandlerの実装
@Component
public class UserMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime", new Date(), metaObject);
this.setFieldValByName("isDeleted", false, metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime", new Date(), metaObject);
}
}
Userを追加します.JAvaフィールド
@TableField(fill = FieldFill.INSERT) //
private Date createTime;
@TableField(fill = FieldFill.UPDATE) //
private Date updateTime;
@TableField(fill = FieldFill.INSERT)
private BooleanisDeleted;
Insertメソッドとupdateメソッドを再実行すればよい
Delete
@Test
void delete() {
// ,
userMapper.deleteById(3L);
}
Select
実はselectも簡単でmybatis plusが提供している方法を見ればわかります
@Test
public void testSelectById(){
User user = userMapper.selectById(1L);
System.out.println(user);
}
@Test
public void testSelectBatchIds(){
List users = userMapper.selectBatchIds(Arrays.asList(1, 2, 3));
users.forEach(System.out::println);
}
@Test
void testSelectByMap() {
Map map = new HashMap<>();
map.put("name", "helen");
List users = userMapper.selectByMap(map);
users.forEach(System.out::println);
}
@Test
void testSelectByPage() {
Page page = new Page(1, 2);
userMapper.selectPage(page, null);
List records = page.getRecords();
records.forEach(System.out::println);
System.out.println(page.getCurrent());//
System.out.println(page.getPages());//
System.out.println(page.getSize());//
System.out.println(page.getTotal());//
System.out.println(page.hasNext());//
System.out.println(page.hasPrevious());//
}