1、在数组转化成集合时 ,数组定义要使用包装类型的数组定义。使用的方法是Arrays.asList(),数组必须使用包装类型定义,因为基本类型没有get和set方法,包装类型式对象,对象中有方法。
Integer[ ] ids = {1,2,4,5,7};
List list = Arrays.asList(ids);
2、在xml文件中写SQL语句的事项:
如果遇到集合参数的传递,需要将集合遍历,使用的标签是foreach 循环遍历集合
标签属性说明:
1、collection 表示遍历的集合类型
1、1数组 关键字array
1.2List集合 关键字list(小写)
1.3map集合 关键字map中的key
2、open 循环开始标签 close 循环结束标签 包裹循环体
3、separator 分隔符
4、item 当前循环遍历数据的变量
3、动态SQL
3.1、核心思想:自动判断是否为null,如果为null,该字段不参与SQL
3.2、动态SQL规则:
1、<if test="写判断条件,可以直接获取属性值 "></if>
true:会拼接,字段条件
false:不会拼接字段条件
2、多余的关键字
由于动态SQL拼接必然会导致多余的 and 或者 or
3、where标签说明:可以去除where后面多余的 and 或 or
3.3、set-if
set标签用法:去除set条件中多余的,号
<!--
set标签用法: 去除set条件中多余的,号
-->
<update id="updateSqlSet">
update demo_user
<set>
<if test="name !=null"> name=#{name}, </if>
<if test="age !=null"> age = #{age}, </if>
<if test="sex !=null"> sex = #{sex} </if>
</set>
where id = #{id}
</update>
3.4、choose --when---otherwise:分支选择判断
根据属性查询数据, 如果name有值 按照name查询,否则按照年龄查询,如果name,age都没有 按照sex查询
<!--
如果只需要一个条件有效,则使用分支结构用法.
-->
<select id="findChoose" resultType="User">
select * from demo_user
<where>
<choose>
<when test="name !=null">
name = #{name}
</when>
<when test="age !=null">
age = #{age}
</when>
<otherwise>
sex = #{sex}
</otherwise>
</choose>
</where>
</select>
4、resultType 和 resultMap区别:
4.1、 resultType 要求:对象的属性名称与表中的字段一一对应。
对象User(id,name,age,sex)
表:(id,name,age,sex)
如果表的字段是 user_id,user_name等,就对应不上了,所以在查询的时候会是null值。
总结:resultType适合单表映射,并且属性名称一致。
4.2、resultMap:
功能:如果我们发现表中的字段与属性名不一致时,使用resultMap映射。
对象:Dog(dogId,dogName)
表:dog(dog_id,dog_name)
5、关于Mybatis注解开发:
使用规则:1、注解标识接口方法,接口方法调用,直接注解的内容
2、注解将查询的结果集,根据方法的返回值类。
编辑注解的接口
public interface UserAnnoMapper {
/**
* 注解使用规则:
* 1.注解标识接口方法. 接口方法调用,直接注解的内容.
* 2.注解将查询的结果集,根据方法的返回值类型动态映射.
*/
//查询user表的数据记录
@Select("select * from demo_user")
//新增 @Insert("sql")
//修改 @Update("sql")
//删除 @Delete("sql")
List<User> findAll();}
Mybatis管理接口
<!--Mybatis加载Mapper映射文件-->
<mappers>
<mapper resource="mybatis/mappers/UserMapper.xml"/>
<mapper resource="mybatis/mappers/UserMapper2.xml"/>
<mapper resource="mybatis/mappers/DogMapper.xml"/>
<!-- 使用注解时 mybatis需要管理mapper的接口 -->
<mapper class="com.jt.mapper.UserAnnoMapper"></mapper>
</mappers>