day52 Mybatis标签

1. 常用标签介绍
    1.1 mybatis配置文件的标签
        Properties
            resource: 直接可以获取类路径
            url: 指定文件的绝对路径。
                方式一:
             <properties>
                <property name="jdbc.driver" value="com.mysql.jdbc.Driver"/>
                <property name="jdbc.url" value="jdbc:mysql://localhost:3306/test"/>
                <property name="jdbc.username" value="root"/>
                <property name="jdbc.password" value="root"/>
            </properties>
                 方式二:
            <dataSource type="POOLED">
            <property name="driver" value="${jdbc.driver}"/>
            <property name="url" value="${jdbc.url}"/>
            <property name="username" value="${jdbc.username}"/>
            <property name="password" value="${jdbc.password}"/>
            </dataSource>
        typeAliases
           <typeAliases>
                <!-- 单个别名定义 -->
                <typeAlias alias="user" type="com.tledu.zrz.pojo.User"/>
                <!-- 批量别名定义,扫描整个包下的类,别名为类名(首字母大写或小写都可以) -->
                <package name="com.tledu.zrz.pojo"/>
                <package name="其它包"/>
            </typeAliases>
        Mappers属性        
            Mappers使我们所说的映射器,用于通过mybatis配置文件去找到对应的mapper文件
            有三种用法
            Resource
                如:<mapper resource="com/tledu/mjw/mapper/UserMapper.xml" />
            class
                使用 mapper 接口类路径
                <mapper class="com.tledu.mjw.mapper.UserMapper"/>
                此种方法要求 mapper 接口名称和 mapper 映射文件名称相同,且放在同一个目录中。
            Package
                注册指定包下的所有 mapper 接口
                如:<package name="com.tledu.zrz.mapper"/>
                此种方法要求 mapper 接口名称和 mapper 映射文件名称相同,且放在同一个目录中。
    1.2 Mapper.xml sql标签介绍
        取值属性:
            #{} 取值特点:会默认将获取值加单引号,可以防止sql注入
             ${} 取值特点:直接将值取出不会加引号,可能会出现sql注入的风险
        parameterType
            作用:用来接收出入参数的类型        
        resultType
            作用:用来设置返回数据的数据类型
        resultMap
            作用:如果在表中的字段与接收对象的属性名不一致时,可以通过定义resultMap来实现映射。
2. Junit 单元测试
    作用:实现局部多个不同模块的快速测试
    第一步:导包
        junit.jar hamcrest-core.jar
    第二步:直接在要测试的方法上加@Test注解
3. 分页
    分页需要的参数:
    cpage:当前页
    PageSize: 分页单位
    totalPage:总页数
    totalCount:总条数
    start: 起始值= (cpage-1) * pageSize;
    核心sql:   limit start,pageSize;
        Map map = new HashMap();
        map.put(“start”,start);
        map.put(“pageSize”,pageSize);
        Select * from t_user limit #{start},#{pageSize}
4. 模糊查询
    select CONCAT('a','b','c');
    concat()函数就是用来拼接字符串的
    like concat('%',#{name},'%')
5. 动态SQL    
    if标签
        <if test=”name != null”>
            where name like concat(‘%’,#{name},’%’);
        </if>
    where标签
         <where>
            <if test=”name != null”>
                   and name like concat('%',#{name},'%')
            <if test="price != null">
                and price > #{price}
            </if>
        <where>    
    set标签
        <set>
            <if test="name != null">name=#{name},</if>
            <if test="price != null">price=#{price},</if>
        </set>
    trim标签
        <trim prefix="where" prefixOverrides="and|or">
            <if test="name != null">
                name like concat('%',#{name},'%')
            </if>
            <if test="price != null">
                price > #{price}
            </if>
        </trim>
         <trim prefix="set" suffixOverrides=",">
            <if test="name != null">name=#{name},</if>
            <if test="price != null">price=#{price},</if>
        </trim>
    choose、when、otherwise
        <where>
            <choose>
                <when test="name != null">
                    name like concat('%',#{name},'%')
                </when>
                <when test="price != null and price != 0">
                    price > #{price}
                </when>
                <otherwise>
                    id > 1
                </otherwise>
            </choose>
         </where>
    foreach标签
        item集合中每一个元素进行迭代时的别名,open该语句以什么开始,separator在每次进行迭代之间以什么符号作为分隔符,close以什么结束
        <foreach collection="list" item="ii" open="(" close=")" separator="," >
            #{ii}
        </foreach>
    bind标签
        <select id="listProductByName" parameterType="Product" resultType="Product">
            <bind name="likename" value="'%' + name + '%'" />
            select * from  t_product where name like #{likename}
        </select>
6. 关联查询
    一对多:一个产品类型有多个产品信息
        1、想到在一的一方Category 添加多的一方属性 List<Product> products
        2、创建ResultMap标签,通过collection标签将多的一方进行封装
        3、注意哪张表是主表哪张表信息是从表
           resultMap标签中的type属性表示主表的数据类型
           Collection标签中的 ofType属性表示从表也就是多数据的数据类型
        <resultMap id="categoryBean" type="Category">
            <id column="cid" property="id"></id>
            <result column="cname" property="name"></result>
            <collection property="products" ofType="Product">
                <id column="pid" property="id"></id>
                <result column="pname" property="name"></result>
                <result column="price" property="price"></result>
            </collection>
        </resultMap>
    多对一:多个产品中每个产品对应了一个产品类型
        1、在每个商品中添加对应的类型属性  Category category
        2、创建ResultMp标签,通过association标签将对应的每个类型进行映射
        3、association标签中的 javaType 指定对应的映射类型 Category
        <resultMap id="productBean" type="Product">
            <id column="pid" property="id"></id>
            <result column="pname" property="name"></result>
            <!--映射对应的类型-->
            <association property="category" javaType="Category">
                <id column="cid" property="id"></id>
                <result column="cname" property="name"></result>
            </association>
        </resultMap>
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值