mybaits 源码分析 2 使用 mybatis+spring boot 2 + ProviderMethodResolver

SQL语句构建器类

1、使用类加载方式自定义SQL,其实  方法 很简单 那就是 实现  ProviderMethodResolver类 ,如下所示:

创建一个UserSqlProvider 实现ProviderMethodResolver

public class UserSqlProvider implements ProviderMethodResolver {

  public static String selectById (User user){
      return new SQL(){
   
   {
          SELECT (" *");
          FROM ("user")  ;
          WHERE ("id = #{id}");
      }}.toString();
  }

}

注释:(1)SQL类就是对组装的sql字符进行解析 (2)ProviderMethodResolver 就是一个提供者方法解析器,详情请自行看源码

2、创建一个TestUserMapper 接口 ,如下所示:

@Mapper
public interface TestUserMapper {

    @SelectProvider(type = UserSqlProvider.class)
    User selectById(User user);
}

注释:(1)接口添加@Mapper (2) 接口 方法上添加 @SelectProvider(type = UserSqlProvider.class),type 为类代理类

3、创建service 接口,以及service实现类,如下所示

UserService 接口类:

public interface UserService {
    User selectById(User user);
}

UserServiceImpl 实现类:

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private TestUserMapper testUserMapper;

    @Override
    public User selectById(User user) {
        return testUserMapper.selectById(user);
    }
}

注释:(1)添加@Service注解 (2)讲TestUserMapper类注入

4、创建UserController 类,实现通过API接口的方式进行访问测试

@RestController
@RequestMapping("/")
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping("UserInfo")
    @GetMapping
    public User  findById(){
        User user = new User();
        user.setId(1);
        user = userService.selectById(user);
        System.out.println("userId:"+user.getId()+"userIdName"+user.getName());
        return user;
    }
}
注释:(1)讲UserService类注入(2)调用selectById方法,通过对象的方式传值进行查询

5、启动服务器主类 DemoMybatisApplication,如下所示:

@SpringBootApplication
public class DemoMybatisApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoMybatisApplication.class, args);
    }

}

6、通过接口访问,地址:http://localhost:8080/UserInfo,得到如下信息表示成功:

这就是一个简单的 使用 ,

更详细的 请参考官网地址:http://www.mybatis.org/mybatis-3/zh/statement-builders.html

猜你喜欢

转载自blog.csdn.net/CHL123456789/article/details/100704943