ActiveRecord 模式
簡稱AR模式 ,它是活動記錄,是一種領域模型模式。特點:一個模型類對應關系型數據庫中的一個表, 一個實例對應數據庫中的一行記錄,屬於動態模型,簡單講就是直接用實體類對數據庫進行Crud 操作,而Java是准靜態語言不能支持AR 形式 MP作者對此進行探索才有現在的功能java 也能實現的AR模式。下面直接上代碼
@Data
@TableName("user")
@EqualsAndHashCode(callSuper = false)
public class User extends Model<User> {
private static final Long SeriaVersionUID=1L;
首先實體類繼承Model抽象類 繼承后可能會有警告(我這里沒有)警告是lombok自動生成的equals和hashcode沒有調用父類 在類上添加 該注解@EqualsAndHashCode(callSuper = false) false 表示不調用 ,還有需要添加
private static final Long SERIALVERSIONUID=1L;(也可能不用加)
接口 繼承BaseMapper
public interface UserMapper extends BaseMapper<User>
測試類如下
package com.mp;
import com.mp.entity.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.time.LocalDateTime;
@RunWith(SpringRunner.class)
@SpringBootTest
public class ARTest {
/**
* AR新增 用實體類對象調用inser()
* 生成的sql: INSERT INTO user ( id, name, age, email, manager_id, create_time ) VALUES ( ?, ?, ?, ?, ?, ? )
*/
@Test
public void test() {
User user = new User();
user.setAge(18);
user.setName("哈哈");
user.setEmail("hh@baomidou.com");
user.setManagerId(1088248166370832385L);
user.setCreateTime(LocalDateTime.now());
boolean b = user.insert();
System.out.println(b);
}
/**
* AR查詢根據id用實體類對象調用selectById()
* 查詢結果是一個新對象 並不會封裝到原有對象里
* 生成的sql:SELECT id,name,age,email,manager_id,create_time FROM user WHERE id=?
*/
@Test
public void testSelectId() {
User user = new User();
user.setId(1088248166370832385L);
User user1 = user.selectById();
System.out.println(user1);
}
/**
* AR 更新
* 生成的sql:UPDATE user SET name=? WHERE id=?
*/
@Test
public void testUpdate() {
User user = new User();
user.setId(1088248166370832385L);
user.setName("王天鳳");
boolean user1 = user.updateById();
System.out.println(user1);
}
/**
* AR 刪除
* 生成的sql:DELETE FROM user WHERE id=?
*
* 結果返回boolean 這里要注意的 MP在在處理返回值是 大於等於0 都會返回true
*/
@Test
public void testDelete() {
User user = new User();
user.setId(1149946502220713986L);
boolean user1 = user.deleteById();
System.out.println(user1);
}
}
還有很多方法這里只是列舉了基本的 ,目前感覺MP就是把mybatis 所欠缺的那部分功能不上了讓mybatis更實用