MyBaitsPlus---- 知识盲点整理,mysql 数据库项目式教程答案
6.selectByMap 方法,通过 map 集合封装查询条件
============================================================================================
Map<String, Object> map = new HashMap<>();
//这里的 key 作为查询时拼接的 sql 语句的数据库列名
map.put("name","大忽悠 1 号");//这里的 name 必须是数据库的列名
List<User> users =userMapper.selectByMap(map);
==============================================================================
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
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 中
===================================================================
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;
}
}
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();
评论