Mabatis動態條件語句
阿新 • • 發佈:2018-12-18
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(); } } 都是一些基本查詢語法語句