mybatis:动态sql加分页

1.mybatis动态sql

    1.1 if

    1.2 trim 

trim:格式化标签 simpleDateFormart new date->是一个长整型

作用:构造可运行的sql语句

prifex:前缀

sufix:后缀

suffixOverrides:减除最后一个逗号

    1.3 foreach

bookVo

package com.xxx.mybatis01.vo;

import com.xxx.mybatis01.model.Book;

import java.util.List;

/**
 * @author Zhang
 * vo层的母的在于不破坏原有的实体类与数据库的映射关系(结构关系)
 */
public class BookVo extends Book {
    private List<Integer> bookIds;

    public List<Integer> getBookIds() {
        return bookIds;
    }

    public void setBookIds(List<Integer> bookIds) {
        this.bookIds = bookIds;
    }
}


    1.4 其他

       choose/set/where


2.模糊查询(3种方式)
 
    2.1 参数中直接加入%%

    2.2 使用${...}代替#{...}(不建议使用该方式,有SQL注入风险)
       
          关键:#{...}与${...}区别?
          参数类型为字符串,#会在前后加单引号['],$则直接插入值

          注:
          1) mybatis中使用OGNL表达式传递参数
          2) 优先使用#{...}
          3) ${...}方式存在SQL注入风险

    2.3 SQL字符串拼接CONCAT

3.查询返回结果集

    resultMap:适合使用返回值是自定义实体类的情况(非人为提供的类就是自定义的,也就是jdk提供的类)
    resultType:适合使用返回值的数据类型是非自定义的,即jdk的提供的类型

    3.1 使用resultMap返回自定义类型集合
    
    3.2 使用resultType返回List<T>

    3.3 使用resultType返回单个对象

    3.4 使用resultType返回List<Map>,适用于多表查询返回结果集

    3.5 使用resultType返回Map<String,Object>,适用于多表查询返回单个结果集

 

代码

bookMapper

/**
     * 讲解foreach
     * @param bookVo
     * @return
     */
    List<Book> list1(BookVo bookVo);

    /**
     * 讲解模糊查询
     * 1、#{} ognl 传入的字符串自带''
     * 2、${}占位符 如果没有''会报错 会形成sql注入
     * 3、concat 拼接两个字符串
     * @param book
     * @return
     */
    List<Book> list2(Book book);

    /**
     * 使用resultMap返回自定义类型集合
     * @return
     */
    List<Book> list3();

    /**
     * 使用resultType返回自定义类型集合List<T>
     * @return
     */
    List<Book> list4();

    /**
     *  使用resultType返回List<Map>,适用于多表查询返回结果集
     * @return
     */
    List<Map> list5();

    /**
     * 使用resultType返回Map<String,Object>,适用于多表查询返回单个结果集
     * @param map
     * @return
     */
    Map list6(Map map);

    /**
     * 使用resultType返回单个对象
     */
    Book selectByPrimaryKey(Integer bid);

bookMapper.xml

<resultMap id="BaseResultMap" type="com.xxx.mybatis01.model.Book" >
    <constructor >
      <idArg column="bid" jdbcType="INTEGER" javaType="java.lang.Integer" />
      <arg column="bname" jdbcType="VARCHAR" javaType="java.lang.String" />
      <arg column="price" jdbcType="REAL" javaType="java.lang.Float" />
    </constructor>
  </resultMap>


 <select id="list1" resultType="com.xxx.mybatis01.model.Book" parameterType="com.zking.mybatis01.vo.BookVo">
    select
      <include refid="Base_Column_List"/>
      from t_mvc_book
      where bid in
      <foreach collection="bookIds" separator="," item="bid" open="(" close=")">
        #{bid}
      </foreach>
  </select>
  <select id="list2" resultType="com.xxx.mybatis01.model.Book" parameterType="com.zking.mybatis01.model.Book">
    select
    <include refid="Base_Column_List"/>
    from t_mvc_book
    where bname like concat(concat('%',#{bname}),'%')
  </select>
  <select id="list3" resultMap="BaseResultMap">
    select
    <include refid="Base_Column_List"/>
    from t_mvc_book
  </select>
  <select id="list4" resultType="com.xxx.mybatis01.model.Book">
    select
    <include refid="Base_Column_List"/>
    from t_mvc_book
  </select>
  <select id="list5" resultType="java.util.Map">
    select
    <include refid
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值