Mabatis动态条件语句

Mybatis 基本的动态条件语句

首先先搭建好配置mybatis

导入一个log4j的包放到resources下 并且配置好log4j的依赖文件

在你配置的实体类下面 xml文件

实体类
users

package com.ch.entity;

public class Users {
    private int uid;
    private String uname;
    private String usex;
    private String birthday;
    private String address;

    public Users( String uname, String usex, String birthday, String address) {

        this.uname = uname;
        this.usex = usex;
        this.birthday = birthday;
        this.address = address;
    }

    public int getUid() {
        return uid;
    }

    public void setUid(int uid) {
        this.uid = uid;
    }

    public String getUname() {
        return uname;
    }

    public void setUname(String uname) {
        this.uname = uname;
    }

    public String getUsex() {
        return usex;
    }

    public void setUsex(String usex) {
        this.usex = usex;
    }

    public String getBirthday() {
        return birthday;
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public Users() {
    }

    @Override
    public String toString() {
        return "Users{" +
                "uid=" + uid +
                ", uname='" + uname + '\'' +
                ", usex='" + usex + '\'' +
                ", birthday='" + birthday + '\'' +
                ", address='" + address + '\'' +
                '}';
    }
}

users.xml
配置动态查询语句

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="users">
    <!--mybatis动态显示sql-->
    <select id="findUsers" parameterType="map" resultType="Users">
        <!--通过id查询 id不为空-->
        select * from users
        <where>
            <trim prefixOverrides="and">
                <if test="uid!=null">
                    and uid=#{uid}
                </if>
               <if test="uname!=null and uname!=''">
                    and uname like concat('%',#{uname},'%')
                </if>
            </trim>
        </where>
    </select>

    <!--动态修改-->
    <update id="updateUsers" parameterType="map">
        update  users
        <set>
            <trim suffixOverrides=",">
                <if  test="uname!=null">
                    uname=#{uname},
                </if>
                <if test="usex!=null">
                      usex=#{usex},
                </if>
            </trim>
        </set>
     <if test="uid!=null">
         where uid=#{uid}
     </if>
    </update>


    <!--批量删除-->
<delete id="deleteMoreUsers">
    delete  from  users
    <where>
        uid in
        <foreach collection="array" item="ids" open="(" close=")" separator=",">
            #{ids}
        </foreach>
    </where>
</delete>

    <!--动态新增-->
    <sql id="key">
        <trim suffixOverrides=",">
            <if test="users.uname!=null">
                uname,
            </if>
            <if test="users.usex!=null">
                usex,
            </if>
            <if test="users.birthday!=null">
                birthday,
            </if>
            <if test="users.address!=null">
                address,
            </if>
        </trim>
    </sql>

    <sql id="value">
        <trim suffixOverrides=",">
            <if test="users.uname!=null">
                #{users.uname},
            </if>
            <if test="users.usex!=null">
                #{users.usex},
            </if>
            <if test="users.birthday!=null">
                #{users.birthday},
            </if>
            <if test="users.address!=null">
                #{users.address},
            </if>
        </trim>
    </sql>
   <!--动态添加-->
   <insert id="insertUsers" parameterType="map">
       insert into users(<include refid="key"></include>) values(<include refid="value"></include>)
   </insert>
</mapper>

都是一些基本的判断语句 if trim
suffixOverrides 去除尾部
prefixOverrides 去除头部
还有批量删除的属性

全部配置好之后 就可以测试了

package com.ch.test;

import com.ch.entity.Users;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class TestUsers {

    private SqlSession sqlsession;

    @Before
    public  void before(){
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(getClass().getClassLoader().getResourceAsStream("mybatis-config.xml"));
        sqlsession = sqlSessionFactory.openSession();
    }


    @Test
    public void  test() {
//        Map<String,Object> map=new HashMap<>();
//         map.put("uid",1);
//          map.put("uname","李四");
//        //查询
//       List<Users> list=sqlsession.selectList("users.findUsers",map);
//        for (Users users : list) {
//            System.out.println(users);
//        }
//        修改
//        sqlsession.update("users.updateUsers",map);

//
        //测试数组批量删除
//       int[] ids={1,2};
//        sqlsession.delete("users.delete",ids);

       /*测试增加*/
//        Map<String,Object> map=new HashMap<>();
//        Users u=new Users();
//        u.setUname("王五");
//        u.setUsex("女");
//        map.put("users",u);
//
//        sqlsession.insert("users.insertUsers",map);
    }
    @After
    public  void after(){
        sqlsession.commit();
        sqlsession.close();
    }
}

都是一些基本查询语法语句        

猜你喜欢

转载自blog.csdn.net/weixin_42014719/article/details/83591101