一,ActiveRecord的简介
ActiveRecord(间称AR),这个模式的框架一直被很多动态语言(PHP,Ruby等)使用,因为动态语言的类型是动态检测的语法也相对简单,很兼容这个模式,但java作为静态语言,ActiveRecord并不是那么友好,但也一直在探索,MybatisPlus ActiveRecord就是结果
ActiveRecord的概念:ActiveRecord也属于ORM(对象关系映射),由Rails最早提出,遵循标准的ORM模型
ActiveRecord的主要思想:
- 每一个数据库表对应一个类,类的每一个对象实例对应于数据库中表的一行记录,通常表的每一个字段在类中都有相应的Field
- ActiveRecord同时负责把数据持久化并在ActiveRecord中封装了对数据库的访问,即CRUD
- ActiveRecord是一种领域模型(Domain Modle),封装了部分的业务逻辑
ActiveRecord比原生MybatisPlus还要简单,只需要在pojo类种继承一个Model就可以进行操作CRUD,Model和BaseMapper作用差不多都封装了很多对表的操作方法,但Model继承在实体类上,BaseMapper需要映射接口实现
注:MybatisPlus ActiveRecord在某些方面其实还是不完善的,在调用Model时前提必须把该类的映射接口先声明并且继承BaseMapper接口,不然会报错,因为底层依然是使用BaseMapper进行SQL注入
二,Model的方法
Model抽象类没有其他接口和父类,方法也没有BaseMapper那么多,但基本的CRUD和条件判断都是有的
增加:
- insert():插入
- insertOrUpdate:插入或者更新
更新:
- updateById():按照id更新
- update(Wrapper<T> updateWrapper):按照条件进行更新,条件判断也是使用Wrapper
删除:
- deleteById(Serializable id):按照id删
- delete(Wrapper<T> queryWrapper):按照条件删除
查询:
- List<T> selectAll():查询所有,就是select * from
- selectById(Serializable id):id进行查询
- selectList(Wrapper<T> queryWrapper):按照条件进行多数据查询
- selectOne(Wrapper<T> queryWrapper):按照条件单条查询
- selectPage(E page, Wrapper<T> queryWrapper):分页查询
- selectCount(Wrapper<T> queryWrapper):记录条数查询
直接SQL操作:
- sqlStatement(String sqlMethod):直接写SQL进行操作
方法基本和在使用BaseMapper时是一样的
三,ActiveRecord的使用
一,查询
① 实体类
@Data @ToString @TableName("mybatistest") public class activerecord_pojo extends Model<activerecord_pojo> { @TableId(type = IdType.AUTO) int id; String name; int sex; int age; }
② 映射接口(这个接口必须要有而且需要继承BaseMapper)
public interface activecord_mapper extends BaseMapper<activerecord_pojo> {//泛型也需要传入 }
③ 测试
@SpringBootTest public class activerecord { @Test public void test1(){ //实例化类 activerecord_pojo activerecordpojo = new activerecord_pojo(); //通过这个类调用Model中的方法 activerecord_pojo pojo = activerecordpojo.selectById(1L); System.out.println(pojo); //wrapper QueryWrapper<activerecord_pojo> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("name","da"); //条件列表查询 List<activerecord_pojo> pojos = activerecordpojo.selectList(queryWrapper); System.out.println(pojos); }}
二,删除
实体类和映射接口是一样的
① 实体类
② 映射接口(这个接口必须要有而且需要继承BaseMapper)
③ 测试
@Test void delete(){ activerecord_pojo activerecordpojo = new activerecord_pojo(); QueryWrapper<activerecord_pojo> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("name","da").eq("age","21"); //按照条件删除 boolean delete = activerecordpojo.delete(queryWrapper); System.out.println(delete); }
④ 结果
三,插入
③ 测试
@Test void insert(){ activerecord_pojo activerecordpojo = new activerecord_pojo(); //设置插入的信息 activerecordpojo.setName("model_insert"); activerecordpojo.setAge(12); activerecordpojo.setSex(1); //插入成功返回true boolean insert = activerecordpojo.insert(); System.out.println(insert); }
④ 结果
四,更新
③ 测试
@Test void update(){ activerecord_pojo activerecordpojo = new activerecord_pojo(); //设置更新的信息,按照id更新的话,必须设置id activerecordpojo.setId(6); activerecordpojo.setName("model_update"); activerecordpojo.setAge(12); activerecordpojo.setSex(1); //成功返回true boolean b = activerecordpojo.updateById(); System.out.println(b); }
④ 结果
Comments | NOTHING
Warning: Undefined variable $return_smiles in /www/wwwroot/wql_luoqin_ltd/wp-content/themes/Sakura/functions.php on line 1109