笔记:mybatis模糊查询简单拼接,分页插件,以及自己栽在${}和 #{}的坑

1.模糊查询

基础打的不牢靠,用的时候就是各种错;
在springmvc用到模糊查询的时候,编写xml的mapper映射文件就出错了;
例如:
查询名字里带有张字的用户;很简单的一条sql;

select * from THEUSER where userName like '%张%';

写在xml里面:这不是唯一方法,只是我感觉自己用起来简单,容易记住的方法
使用bind标签联合拼接sql;

 <!--模糊查询-->
    <select id="selectType" parameterType="User" resultType="User">
        select * from THEUSER
        <where>
            <if test="userId != null">
                <bind name="id" value="'%'+userId+'%'"/>
                and userId like #{id}
            </if>
            <if test="userName != null">
                <bind name="name" value="'%'+userName+'%'"/>
                and userName like #{name}
            </if>
        </where>
    </select>

2.springmvc中mybatis的分页插件

1.首先要在pom文件中添加依赖

    <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>5.1.6</version>
    </dependency>

2.配置文件applicationContext中配置;

在mybatis工厂中配置

<!-- 声明 mybatis SqlSessionFactory 工厂-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />

        <property name="typeAliasesPackage" value="glut.lz.model" />
        <!--分页插件-->
        <property name="plugins">
            <array>
                <bean class="com.github.pagehelper.PageInterceptor">
                    <property name="properties">
                        <!--使用下面的方式配置参数,一行配置一个 -->
                        <value>
                            helperDialect=oracle
                            supportMethodsArguments=true
                            rowBoundsWithCount=true
                            offsetAsPageNum=true
                            pageSizeZero=false
                            reasonable=true
                        </value>
                    </property>
                </bean>
            </array>
        </property>
    </bean>

3.test测试分页插件

select 简单的查询全部select * 就可以了

查询3步顺序

  • 首页启用分页插件设置当前查询的页码和每页显示的记录数;
  • 调用查询方法
  • 获得的列表进行分页处理–pages
  • 得到要查询的—当前页–pages里的list属性
@Test
    public void testAll() {
        /*1.调用分页插件*/
        PageHelper.startPage(2, 5);
        /*2.查询*/
        List<User> users = userService.selectAll();
        /*3.获得分页结果*/
        PageInfo<User> pages = new PageInfo<>(users);
        List<User> list = pages.getList();
        
        for (User user : list) {
            System.out.println(user);
        }
    }

pages的其他属性;
在这里插入图片描述
4.jsp中使用jstl和el表达式分页效果
在这里插入图片描述
最后一行显示上下页转换方法

<tr>
    <td colspan="4" style="text-align: center">
        <div class="col-md-4" style="text-align: right">
            <c:if test="${pageNo gt 1}">
                <a href="manager/select/1">首页</a>
            </c:if>
        </div>
        <div class="col-md-4" style="text-align: center">
            <c:if test="${pageNo gt 1}">
                <%--上一页--%>
                <a href="manager/select/${pageNo-1}">
                    <span class="glyphicon glyphicon-chevron-left"></span>
                </a>
            </c:if>
            <%--当前页--%>
            <span>${pageNo}</span>
            <c:if test="${pageNo lt pages}">
                <%--下一页--%>
                <a href="manager/select/${pageNo+1}">
                    <span class="glyphicon glyphicon-chevron-right"></span>
                </a>
            </c:if>
        </div>
        <div class="col-md-4" style="text-align: left">
            <c:if test="${pageNo lt pages}">
                <a href="manager/select/${pages}">尾页</a>
            </c:if>
            <span>${pages},${total}个用户</span>
        </div>
    </td>
</tr>

3.&{}和 #{}的坑

在mybatis的映射文件中,动态传递参数的方式有两种;

  • ${} 拼接符
  • #{} 占位符

区别;

  • ${} 拼接符 --sql拼接,是直接编译执行,变量的替换是在dbms数据库管理系统之外,替换后不会加上引号;
  • #{} 占位符 --sql预编译,是预编译执行,变量的替换是在dbms中,替换后会加上引号;

大佬的操作

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值