完成品牌数据的增删改查
查询
查询所有数据
跟着上篇入门案例做,然后修改成自己的数据库信息
编写接口方法,在SQL映射文件中编写sql语句
问题:当实体类属性名和数据库表列名不一样时,不能自定封装数据,该怎么办?
- 起别名
- resultMap标签
resultMap标签通常用于属性名和列名不一致或者多表查询
查看详情
根据id查看某个品牌的具体信息
我们在书写sql语句时,会书写占位符
#{key}:在映射文件中作为sql的占位符参数使用
${key}:
1. 在核心配置文件中获取外部配置文件的数据,入门篇的properties文件
2.在映射文件中作为sql的占位符参数使用(注意:需要使用@Param(“参数”)声明参数名)
#{key}和${key}的区别:
#{}:底层是使用PreparedStatement对象,对sql进行预编译,能防止sql注入
${}:底层是使用Statement对象,对sql进行拼接,会有sql注入风险
条件查询
根据状态,企业名称,商品名称查询品牌信息,这里需要多个参数
当方法中传递的参数有2个或以上时,会分不清哪个属性是所对应的字段名
所以就需要在参数前加@Param(“参数”)
sql语句设置多个参数有3种方式:
- 散装参数,就是上面那种情况,需要加@Param注解
- 实体类封装参数,保证sql中的参数和实体类的属性对应上即可
- map集合,保证sql中的参数和map集合的键的名称对应上即可
sql语句中 = 可以换成like
换成like之后我以为是模糊查询,但是并不是,想变成模糊查询,有俩种方式:
- 以map举例,要么在写map集合时其值输入的时候加入%
- 要么在映射文件书写sql时写成concat(‘%’,#{companyname},‘%’)
或
多条件查询-动态条件
上面哪个条件中,用户可以只输入一个,也可以输入俩个,也可以三个都输入
SQL语句会随着用户的输入或外部条件的变化而变化,我们称之为动态SQL
单条件查询-动态SQL
<where>标签可以自动去除sql语句中where条件里面多余的or或and
添加
主键回填
当一个表中的主键为自增时,第二个表有一个字段所对应的是第一个表中的自增主键,那么在给第二个表添加数据时,第二个表中对应表主键的字段该怎么添加呢?
这时就要用到主键回填,就是第一个表添加的过程中,通过主键回填可以获得第一个表的主键值,然后赋值给第二个表的某个字段
修改
修改部分数据
<set>标签,可以自动除sql语句中多余的逗号
删除
批量删除
标签:遍历容器,获取容器中的元素,拼接sql
<foreach
collection = “集合/数组”
item = “从容器中取出的每一个元素”
separator = “元素之间的分割符号”
open = “以x作为开始”
close = “以x作为结束”>
</foreach>