环境配置
1.导包
2.映入配置文件
3.创建实体类
4.编写实体类对应Mapper接口和Mapper.xml文件
if语句
<mapper namespace="com.kuang.dao.BlogMapper">
<select id="selectBlog" parameterType="map" resultType="Blog">
SELECT * FROM blog where 1=1
<if test="title !=null">
and title = #{title}
</if>
<if test="author != null">
and author = #{author}
</if>
</select>
</mapper>
接口
public interface BlogMapper {
List<Blog> selectBlog(Map<String,Object> map);
}
测试
@Test
public void test2(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);
Map<String,Object> map = new HashMap<>();
map.put("title","Java");
List<Blog> blogs = mapper.selectBlog(map);
for (Blog blog : blogs) {
System.out.println(blog);
}
sqlSession.close();
}
where语句
where 元素只会在子元素返回任何内容的情况下才插入 “WHERE” 子句。而且,若子句的开头为 “AND” 或 “OR”,where 元素也会将它们去除。
<select id="selectBlog" parameterType="map" resultType="Blog">
SELECT * FROM blog
<where>
<if test="title !=null">
and title = #{title}
</if>
<if test="author != null">
and author = #{author}
</if>
</where>
</select>
choose、when、otherwise语句
我们不想使用所有的条件,而只是想从多个条件中选择一个使用。针对这种情况,MyBatis 提供了 choose 元素,它有点像 Java 中的 switch 语句,之辉选择其中一个。
<select id="selectBlog" parameterType="map" resultType="Blog">
SELECT * FROM blog
<where>
<choose>
<when test="title !=null">
and title = #{title}
</when>
<when test="author != null">
and author = #{author}
</when>
<otherwise>
and views = #{views}
</otherwise>
</choose>
</where>
</select>
set语句
set 元素会动态地在行首插入 SET 关键字,并会删掉额外的逗号(这些逗号是在使用条件语句给列赋值时引入的)
<update id="insertBlog">
update blog
<set>
<if test="title!= null">title=#{title},</if>
<if test="author!= null">author=#{author},</if>
<if test="views!= null">views=#{views}</if>
</set>
where id=#{id}
</update>
SQL片段
1.使用SQL标签抽取公共的部分
2.在需要使用的地方使用include标签引用即可
3.在SQL片段中不要存在where标签