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();
}
}
都是一些基本查询语法语句