使用if
<select id="fillAll" resultType="com.User.User" parameterType="com.User.User">
select * from test1 where 1=1
<if test="name != null">
and name = #{name}
</if>
<if test="id != null">
and id = #{id}
</if>
</select>
测试文件
public class testMapper {
@Test
public void test() throws IOException {
InputStream in = Resources.getResourceAsStream("SqlConfigMap.xml");
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(in);
SqlSession sqlSession = sqlSessionFactory.openSession();
IDao iDao = sqlSession.getMapper(IDao.class);
User user = new User();
user.setName("hao");
user.setId(5);
List<User> users = iDao.fillAll(user);
for (User u: users
) {
System.out.println(u);
}
sqlSession.close();;
in.close();
}
}
使用where标签
<select id="findCondition" resultType="com.User.User" parameterType="com.User.User">
select * from test1
<where>
<if test="name != null">
and name = #{name}
</if>
<if test="id != null">
and id = #{id}
</if>
</where>
</select>
实现selsect * from test where id in(2,3,4);
package com.User;
import java.util.List;
/**
* @Author: zheng
* @Data :2019/11/4 18:26
*/
public class Queryvo {
List<Integer> i;
public List<Integer> getI() {
return i;
}
public void setI(List<Integer> i) {
this.i = i;
}
}
持久层
package com.Dao;
import com.User.Queryvo;
import com.User.User;
import javax.jws.soap.SOAPBinding;
import java.util.List;
/**
* @Author: zheng
* @Data :2019/11/4 12:13
*/
public interface IDao {
List<User> fillAll();
User selectById();
List<User> selectByName();
List<User> findCondition(User user);
List<User> findByIdIn(Queryvo vo);
}
主配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="db.properties">
</properties>
<environments default="mysql">
<environment id="mysql">
<transactionManager type="jdbc"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/dao/Sqlmapper.xml"></mapper>
</mappers>
</configuration>
映射文件
<?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="com.Dao.IDao">
<!--当时使用resultMap类型的配置是要导入resultMap属性中-->
<select id="fillAll" resultType="com.User.User" >
select * from test1 where 1=1
</select>
<select id="findByIdIn" resultType="com.User.User" parameterType="com.User.Queryvo">
select * from test1
<where>
<if test="i != null and i.size()>0">
<foreach collection="i" open="and id in(" close=")" item="id" separator=",">
<!--这个id指的是item的名字-->
#{id}
</foreach>
</if>
</where>
</select>
</mapper>
测试文件
@Test
public void test2() throws IOException {
InputStream in = Resources.getResourceAsStream("SqlConfigMap.xml");
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(in);
SqlSession sqlSession = sqlSessionFactory.openSession();
IDao iDao = sqlSession.getMapper(IDao.class);
Queryvo queryvo= new Queryvo();
List<Integer> integers = new ArrayList<Integer>();
integers.add(25);
integers.add(5);
integers.add(4);
queryvo.setI(integers);
List<User> users = iDao.findByIdIn(queryvo);
for (User u: users
) {
System.out.println(u);
}
sqlSession.close();;
in.close();
}
使用sql标签取消重复SQL语句,在<select>这类标签中可以用<include refid="selectSql"></include>导入
映射文件
<?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="com.Dao.IDao">
<!--当时使用resultMap类型的配置是要导入resultMap属性中-->
<sql id="selectSql">
select * from test1
</sql>
<select id="fillAll" resultType="com.User.User" >
<!--select * from test1 w-->
<include refid="selectSql"></include>
</select>
<select id="findCondition" resultType="com.User.User" parameterType="com.User.User">
<include refid="selectSql"></include>
<where>
<if test="name != null">
and name = #{name}
</if>
<if test="id != null">
and id = #{id}
</if>
</where>
</select>
<select id="findByIdIn" resultType="com.User.User" parameterType="com.User.Queryvo">
<!--select * from test1-->
<include refid="selectSql"></include>
<where>
<if test="i != null and i.size()>0">
<foreach collection="i" open="and id in(" close=")" item="id" separator=",">
<!--这个id指的是item的名字-->
#{id}
</foreach>
</if>
</where>
</select>
</mapper>
测试文件
/**
* @Author: zheng
* @Data :2019/11/4 12:14
*/
public class testMapper {
@Test
public void test() throws IOException {
InputStream in = Resources.getResourceAsStream("SqlConfigMap.xml");
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(in);
SqlSession sqlSession = sqlSessionFactory.openSession();
IDao iDao = sqlSession.getMapper(IDao.class);
User user = new User();
user.setName("hao");
user.setId(5);
List<User> users = iDao.findCondition(user);
for (User u: users
) {
System.out.println(u);
}
sqlSession.close();;
in.close();
}
@Test
public void test2() throws IOException {
InputStream in = Resources.getResourceAsStream("SqlConfigMap.xml");
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(in);
SqlSession sqlSession = sqlSessionFactory.openSession();
IDao iDao = sqlSession.getMapper(IDao.class);
Queryvo queryvo= new Queryvo();
List<Integer> integers = new ArrayList<Integer>();
integers.add(25);
integers.add(5);
integers.add(4);
queryvo.setI(integers);
List<User> users = iDao.findByIdIn(queryvo);
for (User u: users
) {
System.out.println(u);
}
sqlSession.close();;
in.close();
}
}
网友评论