ActiveRecord也属于ORM(对象关系映射)层,由Rails最早提出,遵循标准的ORM模型:表映射到记录,记录映射到对象,字段映射到对象属性。配合遵循的命名和配置惯例,能够很大程度的快速实现模型的操作,而且简洁易懂。
简而言之,AR建立了Java对象与数据库表逻辑上的直接映射,方便了程序的编写。而在MP中使用AR非常简单,只需让pojo类继承Model<>类即可。
例:
- @Data
- @NoArgsConstructor
- @AllArgsConstructor
- @TableName("tb_user")
- public class User extends Model
{ - //lombok注解自动为对象创建各种方法
- private String userName;
-
- private String name;
- private Integer age;
-
- @TableId(type = IdType.AUTO)//IdType主键类型,指定为自增长
- private Long id;
-
- @TableField(value = "email")//映射至表中不同命字段
- private String mail;
-
- @TableField(exist = false)//表中不存在
- private int power;
-
- @TableField(select = false)//查询命令不返回该字段值
- private String password;
-
- }
测试:
- @RunWith(SpringJUnit4ClassRunner.class)
- @ContextConfiguration(locations = {"classpath*:applicationContext.xml"})
- public class test {
- //mapper不必再注入,但映射关系、配置类不能缺少,即UserMapper.java与applicationContext.xml的配置
- /*@Autowired
- private UserMapper mapper;*/
-
- @Test
- public void testSelectById(){
- User user = new User();
- user.setId(4L);
-
- //调用AR的按id查询
- User result = user.selectById();
- System.out.println(result);
- }
-
- @Test
- public void testInsert(){
- User user = new User();
- user.setUserName("diaochan");
- user.setPassword("123456");
- user.setAge(20);
- user.setName("貂蝉");
- user.setMail("diaochan@itcast.cn");
-
- // 调用AR的insert方法进行插入数据
- boolean result = user.insert();
- System.out.println(result);
- }
-
- @Test
- public void testUpdate(){
- User user = new User();
- user.setId(3L);// 查询条件
- user.setAge(31); // 更新的数据
-
- boolean result = user.updateById();
- System.out.println(result);
- }
-
- @Test public void testDelet() {
- User user = new User();
- user.setId(7L);
-
- boolean result = user.deleteById();
- System.out.println(result);
- }
-
- @Test public void testSelect() {
- User user = new User();
- QueryWrapper
userQueryWrapper = new QueryWrapper<>(); -
- userQueryWrapper.le("age","20");
-
- //按条件查询
- List
users = user.selectList(userQueryWrapper); - for (User user1 : users) {
- System.out.println(user1);
- }
- }
- }