springday03

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>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值