SpringBoot的超简洁配置,为我们省去了宝贵的配置时间。
Mybatis3在这方面也提供了很好的支持,通过注解让我们摆脱了繁琐的mapper xml,写DAO层的时候再也不用在java接口和xml配置来回切换了,无疑提升了代码的可读性。
但很不幸,Mybatis3在复杂的动态SQL方面的支持,需要再写**Provider
来构建SQL语句,这样的设计感觉有点顾此失彼,本来好端端的通过注解省去了xml配置,但是一遇到动态SQL,又得构建类来处理,让人又爱又恨。看看下面的代码:
package com.syj.test.mybatis;
import com.syj.test.thread.People;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.SelectProvider;
import java.util.List;
/**
* Created by syj on 2019/2/3.
*/
@Mapper
public interface PeopleDAO {
//使用UserDaoProvider类的findUserByName方法来生成sql
@SelectProvider(type = UserDaoProvider.class, method = "findUserByName")
List<People> findPeople(People people);
class UserDaoProvider {
public String findUserByName(People peo) {
String sql = "SELECT * FROM user";