Mybatis四大神器之四——查询(模糊)

本文介绍了一种使用MyBatis实现动态SQL的模糊查询方法,通过在DAO层定义接口并利用XML映射文件中的if标签来判断参数是否为空,从而实现对数据库表的灵活查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本博文主要阐述模糊查询用法,说白了就是动态sql语句,通过if进行判断传进来的字段是否为空,如果为空就不执行任何操作,否则连接(说白了就是组装sql语句),主要步骤如下所示:
1.在bao层“Huserdao”新建一个模糊查询的代码,代码如下所示:

public List<HUser> SelectHuser(Map map);

2.接下来就是在entity层中“Huser.xml”代码中新添查询判断指令,代码如下所示:

<select id="SelectHuser" parameterType="map" resultType="com.hevttc.lmj.entity.HUser">

        select * from h_user where

        <if test="username!=null">

            username like '%${username}%' and

        </if>
        <if test="age!=null">

            age=#{age} and

        </if>

        <if test="sex!=null">

            sex=#{sex} and

        </if>

        <if test="place!=null">

            place like '%${place}%' and

        </if>

            1=1

    </select>

3.在biz层的HuserBiz中添加如下代码:

public  List<HUser> getAllHuser(Map map)
    {
        List<HUser> list=null;

        try {
            SqlSession session=SessionFactory.getSession();


            dao=session.getMapper(HUserdao.class);

            list=dao.SelectHuser(map);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return list;
    }

到了最后一步,就是测试代码能否正常执行,代码如下所示:

HashMap map=new HashMap();

        map.put("username", "张");
        List<HUser> list=biz.getAllHuser(map);

        System.out.println("ID号\t姓名\t年龄\t性别\t地址");
        for(HUser user:list)
        {
            System.out.println(user.getId()+"\t"+user.getUsername()+"\t"+user.getAge()+"\t"+(user.getSex()==0?"男":"女")+"\t"+user.getPlace());
        }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值