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