在springboot项目中,我们会使用到sql语句,要么是使用mybatis-plus底层已经写好的,要么是使用mybatis,来编写对应的sql映射文件.
注意:在springboot中,只需要导入mybatis-plus就可以二者都拥有了
今天介绍mybatis中的sql映射文件
1.一个xxxmapper接口对应一个xxxmapper.xml映射文件,这个文件需要在springboot的配置文件中去配置
下面配置了命名空间,路径,表名前缀及id的类型
sql映射文件的输入,输出类型
我们在数据库执行增删改查操作时,不同的操作返回不同的数据类型
以上是在数据库执行的增删改查语句,由上图我们可以看到,增删改是不返回数据的,只有查询,无论它是值还是没有值,它都会返回,所以,在我们的映射文件语句中,凡是执行select语句,都要有输入(parameterType),输出数据(resultType或者resultMap),不然就会报错
parameterType输入类型
1.输入简单数据类型
1.1使用#{}占位符,里面传入前端传来的数据,有效的防止了之前由于?带来的sql注入问题,
1.2${}做拼接,在使用like关键字的时候,使用${}拼接,不需要在传参的时候手动加入%%,而使用#{}的话,需要手动添加%%进行传参.
2.输入对象
3.输入一个包装类的对象(一个类包含另一个类的属性)
在一个实体类中,添加另一个实体类(例如写法:private User user;)
resultType输出类型
1.返回一个简单类型
2.返回对象(单个,多个都可以)
前提条件:列名必须与属性名一致,其中有一个相同就会创建对象,没有相同的,则不创建对象
resultMap输出类型
1.解决resultType出现的问题:属性名与列名不一致
<result column="字段" property="属性名">
2.对象中包含了另外一个对象(一对一,一对多,多对多关联关系),使用resultType进行映射 .
一对一(两个表):添加关联属性
使用association标签输出关联的单个对象的信息,id作为主键映射
一对多(两个以上表):使用集合,new一个Arraylist包含对象的属性
多对多:使用多个association映射
善于where 1=1恒等关系,在多条件拼接时
SELECT a.id,a.title,u.nick_name,a.comment_count,a.update_time,a.firstImg, 0 as type
FROM tb_article a,tb_user u
WHERE 1=1 AND a.user_id = u.id AND a.title like ${key}
ORDER BY hot ASC limit 0,10
为了避免where后面第一个词就是and,而导致的语法错误
标签:语句,映射,使用,plus,sql,mybatis,id From: https://www.cnblogs.com/pilpill/p/17052618.html