Mybatis-性感的动态语句

首先我们要知道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就要简单多了

你可能感兴趣的:(Mybatis-性感的动态语句)