Mybatis注解方式访问数据库(@SelectProvider、@UpdateProvider、@InsertProvider和@DeleteProvider)`
1. java整合SSM框架中,mybatis的使用大多是通过在Mapper接口定义方法操作访问数据库的方法,在对应的mapper.xml文件中进行Sql的组装拼接处理,实现和数据库的交互。
2.标题中的四个注解也是mybatis提供的,是mybatis3中增加新特性。
3.示例展示:这里以 @SelectProvider为例,其他注解操作类似。
4.代码示例,如下:
控制器:
@Controller
@RequestMapping("/sql")
public class SqlTestController {
@Autowired
private MySqlMapper mySqlMapper;
@RequestMapping(value = "/exe", method = RequestMethod.POST)
@ResponseBody
public ResponseDto queryKind(@RequestBody List list) {
String s = ls.get(0);
List data = mySqlMapper.selectAll(s);
return ResponseUtil.buildVoByResponseCode(ResponseCode.CODE_SUCCESS, data);
}
}
Mapper:
public interface MySqlMapper {
//@ResultMap 内是Mapper.xml文件内的映射 <resultMap>标签内的ID的值通过制定全路径,对反参进行映射。
@ResultMap("com.xxx.xxx.xxx.CommercialPlatformManageTableMapper.BaseResultMap")
@SelectProvider(type = SqlProvider.class, method = "selectAll")
List<CommercialPlatformManageTable> getAll(String str);
}
Sql组装类:
public class SqlProvider {
//类,必须要能够通过无参的构造函数来初始化。
// method参数指定的方法,必须是public的,返回值必须为String,可以为static。
public String selectAll(String sql) {
System.out.println(sql);
return sql;
}
public String updateMessage(String sql) {
return sql;
}
public String deleteMessage(String sql) {
return sql;
}
}
具体的流程是:示例中 getAll()方法的入参值,会传递给 @SelectProvide注解指定的类中方法内,
也就是selectAll()方法中,在方法内对入参进行组装,最后必须返回一条String 类型的sql语句,而返回值则。
5.补充:以上理解,如有错误,还请指正~
网友评论