写点什么

MyBaitsPlus---- 知识盲点整理,mysql 数据库项目式教程答案

用户头像
极客good
关注
发布于: 刚刚


6.selectByMap 方法,通过 map 集合封装查询条件


============================================================================================


Map<String, Object> map = new HashMap<>();


//这里的 key 作为查询时拼接的 sql 语句的数据库列名


map.put("name","大忽悠 1 号");//这里的 name 必须是数据库的列名


List<User> users =userMapper.selectByMap(map);




7.MP 启动注入 SQL 原理分析


==============================================================================


问题:




xxxMapper 继承了 BaseMapper,BaseMapper 中提供了通用的 CRUD 方法,方法来源于 BaseMapper,有方法就必须要有 SQL,因为 MyBatis 最终还是通过 SQL 来操作数据


分析:




![在这里插入图片描述](https://img-blog.csdnimg.cn/c266082d428344c7b3e757a3ae12f8a1.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzUzMTU3MTcz,size_16,c


【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
复制代码


olor_FFFFFF,t_70)


MapperProxy 中的 sqlsession 中的 sqlsessionFactory


SqlSessionFacotry 中 Configuration 的 MappedStatements 中的每一个 mappedStatement 都表示 Mapper 接口中的一个方法于 Mapper 映射文件中的一个 SQL


MP 在启动的时候就会挨个分析 xxxMapper 中的方法,并且将对应的 SQL 语句处理号,保存到 configuration 对象中的 mappedStatements 中


其实就是把方法名作为 key,sql 语句做值,保存在一个 HashMap 中,调用的时候根据方法名去 map 中寻找对应的 sql 语句




几个重要的对象




SqlMethod: 枚举对象,列举 MP 支持的所有 sql 方法



TableInfo :数据库表反射信息,可以获取到数据库表的相关信息



SqlSource:SQL 语句处理对象



MapperBuilderAssistant :用于缓存,SQL 参数,查询返回的结果集处理等



通过 MapperBuilderAssistant 将每一个 mappedStatement 添加到 configuration 中的 mappedstaments 中





8.AR


===================================================================


Active Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。


实体类继承 Model< T >,继承后,我们就可以使用模型类里面的方法来完成 CRUD 的操作了


@NoArgsConstructor


@AllArgsConstructor


@Data


@TableName(value = "user_dao")//指定和数据库中那一张表对应


public class Dhy extends Model<Dhy>


{


String name;


Integer age;


Integer id;


//可以选择重写该方法来指定当前实体类的主键属性


@Override


public Serializable pkVal() {


return id;


}


}





AR 的 CURD 操作演示




void insert()


{


Dhy u=new Dhy("大忽悠哦",18,2);


boolean ret = u.insert();


System.out.println("影响的行数"+ret);


}



void update()


{


Dhy u=new Dhy("尼玛",18,1);


boolean ret = u.updateById();


System.out.println("影响的行数"+ret);


}



void select()


{


Dhy u=new Dhy();


u.setId(1);


Dhy dhy = u.selectById();


System.out.println(dhy);


}



void selectAll()


{


Dhy u=new Dhy();

用户头像

极客good

关注

还未添加个人签名 2021.03.18 加入

还未添加个人简介

评论

发布
暂无评论
MyBaitsPlus----知识盲点整理,mysql数据库项目式教程答案