MyBatis提供了简单的Java注解,使得我们可以不配置XML格式的Mapper文件,方便的编写简单的数据库操作代码:
public interface UserMapper {
@Select("SELECT * FROM users WHERE id = #{userId}")
User getUser(@Param("userId") String userId);
}
但是没有Dynamic SQL的注解是不完整的,故这里向大家介绍下如何通过实现LanguageDriver,优雅的在MyBatis注解中使用Dynamic SQL。
自定义Select In注解
@Lang(SimpleSelectInExtendedLanguageDriver.class)@Select("SELECT * FROM users WHERE id IN (#{userIds})")List selectUsers(@Param("userIds") List userIds);// 一次编写,受益终生public class SimpleSelectInExtendedLanguageDriver extends XMLLanguageDriver implements LanguageDriver { private final Pattern inPattern = Pattern.compile("(#{(w+)})"); @Override public SqlSource createSqlSource(Configuration configuration, String script, Class> parameterType) { Matcher matcher = inPattern.matcher(script); if (matcher.find()) { script = matcher.replaceAll("(