Mybaits动态sql之trim标签
trim 标签可以在前面/后面添加sql,去前/后缀。通过trim标签可以替代 where,set标签。
trim标签完成where标签的功能
<sql id="baseSql">
id , name,age
</sql>
<select id="query" resultType="user" parameterType="user">
select
<include refid="baseSql"></include>
from
t_user
<trim prefix=" where " prefixOverrides="and | or">
<if test="name != null">
and name=#{name}
</if>
<if test="age > 0">
and age = #{age}
</if>
<if test="id!=null and id > 0">
and id = #{id}
</if>
</trim>
</select>
测试一下
@Test
public void test1() throws IOException {
InputStream in = Resources.getResourceAsStream("mybatis-cfg.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
SqlSession session = factory.openSession(true);
// 获取代理类
UserMapper dao = session.getMapper(UserMapper.class);
User user = new User();
//user.setName("李四");
//user.setId(4);
//user.setAge(22);
List<User> list = dao.query(user);
for (User user2 : list) {
System.out.println(user2);
}
session.close();
}
输出打印粘贴
[QC] DEBUG [main] org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(159) | ==> Preparing: select id , name,age from t_user
[QC] DEBUG [main] org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(159) | ==> Parameters:
[QC] DEBUG [main] org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug(159) | <== Total: 26
User [id=1, name=猴子, age=18]
User [id=37, name=cjw, age=18]
User [id=39, name=cjw, age=18]
User [id=40, name=cjw, age=18]
User [id=41, name=zhangsan, age=25]
User [id=42, name=zhangsan1, age=26]
User [id=43, name=zhangsan2, age=27]
User [id=44, name=uw, age=22]
项目打包 提取码:hm32
环境:eclipse,maven