关于mybatis已经给大家讲过很多次了,下面要接着给大家介绍mybatis注解动态sql的内容,一起来了解一下mybatis注解开发之三种动态sql吧。
1、脚本sql
对于XML配置方式的动态SQL这里的话就不怎么讲了,下面的内容是用
的方式将他照搬过来,用注解来实现。
这个比较适用于xml配置转换到注解配置。
其实,可以很明显的看出,在java当中写xml可读性和维护性真的是比较的差的,尤其是在SQL非常长的时候,超级的麻烦。
2、在方法中构建sql
这里的话,我们借用内部类来生成动态SQL。
增改删有对应的@InsertProvider、@UpdateProvider、@DeleteProvider。
这样的话会更加的清晰一些,它比较的适合用于查询语句不是特别的长,条件不多的场景。
但是,在写非常长的SQL的时候,这样的方式也是会比较的麻烦,写到不想写了。@Mapper
public interface MybatisDao
{
//使用UserDaoProvider类的findUserById方法来生成sql
@SelectProvider(type = UserDaoProvider.class, method = "findUserById")
public List findUserById(User user);
class UserDaoProvider
{
public String findUserById(User user)
{
String sql = "SELECT * FROM user";
if (user.getId() != null)
{
sql += " where id = #{id}";
}
return sql;
}
}
3、结构化SQL
这里的话,将前面的内部类进行了一下改造。public String findUserById(User user)
{
return new SQL()
{
{
SELECT("id,name");
SELECT("other");
FROM("user");
if (user.getId() != null)
{
WHERE("id = #{id}");
}
if (user.getName() != null)
{
WHERE("name = #{name}");
}
//从这个toString可以看出,其内部使用高效的StringBuilder实现SQL拼接
}
}.toString();
}
上面的一些例子都只是一些很基础的用法介绍,假如你还想了解更多的用法,请继续关注奇Q工具网的常见问题栏目来进行了解吧。
推荐阅读: