首先我们要知道Mybatis的动态语句举要分别有那几个类型?
第一个:if类用于简单的条件判断
第二个:choose 类可以理解为java 中的 switch
第三个:trim 类(对包含的内容加上 prefix,或者 suffix 等,前缀,后缀)
第四个:where 类(主要是用来简化sql语句中where条件判断的,能智能的处理 and or ,不必担心多余导致语法错误)
第五个:set 类(主要用于更新时)
第六个:foreach 类(在实现 mybatis in 语句查询时特别有用)
第一个
if类作为最简单的处理类型
容理解而且代码很少哦
我给大家举个栗子
首先建好数据库
CREATE TABLE `t_blog` (
`id` INT (11),
`title` VARCHAR (765),
`content` VARCHAR (765),
`owner` VARCHAR (150)
);
INSERT INTO `t_blog` (`id`, `title`, `content`, `owner`) VALUES('1','java基础','详细描述','唐国强11');
INSERT INTO `t_blog` (`id`, `title`, `content`, `owner`) VALUES('2','中文','中国','ofo11');
INSERT INTO `t_blog` (`id`, `title`, `content`, `owner`) VALUES('3','html','html标签','样式');
INSERT INTO `t_blog` (`id`, `title`, `content`, `owner`) VALUES('6','html','www','eee');
INSERT INTO `t_blog` (`id`, `title`, `content`, `owner`) VALUES('9','中文','111','1111');
其次把我们的代码写入映射文件
我们这个时候需要一个工具类代码如下
public class MybatisUtil {
private static SqlSessionFactory sqlSessionFactory;
static{
String resource = "mybatis.xml";
InputStream is = MybatisUtil.class.getClassLoader().getResourceAsStream(resource);
sqlSessionFactory=new SqlSessionFactoryBuilder().build(is);
}
public static SqlSession getSession(boolean tag){
//tag为真,则自动提交,为假则需要手动提交
return sqlSessionFactory.openSession(tag);
}
}
最后进行测试:
@Test
public void testBlog(){
SqlSession session=MybatisUtil.getSession(true);
Blog blog=new Blog();
blog.setTitle("html");
List list=session.selectList("com.dao.BlogMapper.dynamicIfTest",blog);
System.out.println(list);
}
done
是不是很简单
如果你提供了title参数,那么就要满足title=#{title},同样如果你提供了Content和Owner的时候,它们也需要满足相应的条件,之后就是返回满足这些条件的所有Blog,这是非常有用的一个功能,以往我们使用其他类型框架或者直接使用JDBC的时候, 如果我们要达到同样的选择效果的时候,我们就需要拼SQL语句,这是极其麻烦的,比起来,上述的动态SQL就要简单多了