分页插件
github.pageHelper
foreach 因为通常集合 数组什么的都是以(1,2,3)的形式存在
select 。。。 where 字段 in
if< test="集合名!=null" >
< foreach collection="集合名" item="id" open="(" close=")" separator=",">
#{id}
set是在有内容的时候插入到第一个 会把最后一个的逗号给去掉
select sum() 是求一列的字段值
where 元素只会在子元素返回任何内容的情况下才插入 “WHERE” 子句。而且,若子句的开头为 “AND” 或 “OR”,where 元素也会将它们去除。
<insert id="insert" parameterTyper="..."
useGeneratedKeys="true" keyProperty="accountId">
insert into <include refid="table"/>
where account_ID=#{accountID,JdbcType=INTEGER}
B站颜群讲jdbctype
当传给标签的参数的数据类型不能处理的时候 :
最简单比如你传了个null类型 或者人家要integer你给string
就会默认走你设置的jdbctype的类型 避免出错
一般CRUD时pojo属性给数据库字段赋值都会用到
在mybatis中配置jdbctype原因是 更新或者插入等不希望赋给字段内容为空即无效的类型
JDBCTYPE是数据库中字段的类型,看看都有那些
useGeneratedKeys="true" keyProperty="articleId"
useGeneratedKeys设置为 true 时,
表示如果插入的atricle表的articleId以自增列为主键,
则允许 JDBC 支持自动生成主键,并可将自动生成的主键articleId返回。
如果当前的表是以自增列为主键 那我们使用这个useGeneratedKeys就是
不用去传主键他会自动的帮我们生成主键并且返回给其插入的主键字段具体指
useGeneratedKeys参数只针对 insert 语句生效,默认为 false;
B站颜群讲的@param
在传递多个参数的时候 mapper.xml的标签中直接写参数名是会报错的
只能用param1~ 或者arg0等 但是不宜读 为了宜读在参数前面加上@Param(“代替名") 直接使用代替名就可以进行sql赋值
@param的用法
注意一下@Param()括号里为对象的时候必须写parameterType 并且调用属性的时候要 对象.属性
@param将表单中name属性中的value值,赋值给方法中的形式参数
B站颜群讲的resultmp
resultmap在标签当中只是一个“映射” 并不是返回值 一开始被标签中的resultmap和mapper接口的返回值list 类型不一致弄蒙了 原因是根本没有理解resultmap的工作原理
resultMap作为返回结果类型
resultMap2
resultMap
对列表展示所需的必要字段来进行自动映射,特别是当数据库的字段名和实体类entity中的属性名不一致的情况下。或者需要做复杂的联合查询以便自由控制映射结果。column
是 article-title,而 Atrical 对象的属性名(property
)为 articleTitle ,此时就需要做映射。 最常用的情况是查询的时候把返回结果 通过concat()函数字符串拼接后变成我们想要的查询结果
select name from table where address="江西"
select concat("名字是:",name,的人住在江西 )from table where address="江西"
还有在模糊查询的时候常用 具体的好处我也没弄清楚 但是好像就是工作都这样写 把参数包裹起来 然后再前后拼接形成%#{id}% 这样我们参数就在里面一直变换
可能从前是需要手动的改变值like 后面直接跟"%id%" 放的参数都不会被真正改变会出错误吧
链接1:concat()模糊查询
链接2:ORACLE 只能接收contat(参数1,参数2)中有2个
一般情况我们模糊查询都是
like “fish%” 以fish开头
like “%M” 以M结尾
ORDER BY `article`.`article_order` DESC
有时你只是想直接在SQL语句中插入一个不改变的字符串。比如,像ORDER BY,你可以这样来使用:ORDER BY ${columnName}
这里MyBatis不会修改或转义字符串。
<select id=" " resultType=" " >
select <include refid=""/> from <include refid=""/>
<where>
<if test=" !=null"> 数据字段=#{pojo属性,jdbcType=全大写属性} if>
<if test=" !=null"> 数据字段=#{pojo属性,jdbcType=全大写属性} if>
where>
order by 表.order desc ,表.id desc
limit #{limit}或者分页limit #{pageStart},#{pageSize}
select>
<insert id="" paramertType=" " userGeneratedKey="true"
keyPropert=" id">
insert into <include refid="">(,,,)
values(#{第一个非主键的属性,jdbcType=},#{属性,jdbcType=},,)
insert>
<update id="" parameterType="" >
update <include refid=" ">
<SET>
<if test="!=null">字段名=#{属性},if>
<if test="!=null">字段名=#{属性},if>
SET>
where =#{,jdbcType=}
update>
<delete id="" parameterType="">
delete from <include refid=""> where
<if test="!=null"> =#{属性名,jdbcType=}if>
<delete>