mybtais 动态sql注解
所属分类 mybatis
浏览量 123
MyBatis使用 @SelectProvider、@InsertProvider、@UpdateProvider、@DeleteProvider注解 建动态SQL语句。
type属性,该属性指定一个类;method属性指定该类的方法,其用来提供需要执行的SQL语句
PetMapper.java
@SelectProvider(type= SqlProvider.class,method="queryPetsByStartId")
List< PetDO> queryPetsByStartIdIfIdNotNull2(PetDO pet);
public class SqlProvider {
public String queryPetsByStartId(PetDO pet){
String sql = "SELECT id,name,age FROM pet ";
Long id = null;
if(pet!=null) {
id = pet.getId();
}
if(id!=null && id>0){
sql = sql + " where id=#{id} ";
}
sql = sql + " order by id asc";
return sql;
}
}
@RequestMapping("/queryPetsByStartIdIfIdNotNull2")
public Object queryPetsByStartIdIfIdNotNull2(@RequestParam long id){
PetDO pet = new PetDO();
if(id>0){
pet.setId(id);
}
return petMapper.queryPetsByStartIdIfIdNotNull2(pet);
}
查看 sql 信息的工具
@RequestMapping("/getMappedStatementNames")
public Object getMappedStatementNames(){
return sqlSessionFactory.getConfiguration().getMappedStatementNames();
}
@RequestMapping("/getSqlSource")
public Object getSqlSource(String id)throws Exception{
Configuration config = sqlSessionFactory.getConfiguration();
MappedStatement mappedStatement = config.getMappedStatement(id);
if(mappedStatement==null){
return "mappedStatement_null";
}
SqlSource sqlSource = mappedStatement.getSqlSource();
Map map = new HashMap<>();
map.put("type",sqlSource.getClass().toString());
map.put("info",sqlSource.toString());
return map;
}
@RequestMapping("/getBoundSql")
public Object getBoundSql(String id)throws Exception{
Configuration config = sqlSessionFactory.getConfiguration();
MappedStatement mappedStatement = config.getMappedStatement(id);
if(mappedStatement==null){
return "mappedStatement_null";
}
SqlSource sqlSource = mappedStatement.getSqlSource();
return sqlSource.getBoundSql(null);
}
@RequestMapping("/getBoundSql2")
public Object getBoundSql2(String id,long petId)throws Exception{
Configuration config = sqlSessionFactory.getConfiguration();
MappedStatement mappedStatement = config.getMappedStatement(id);
if(mappedStatement==null){
return "mappedStatement_null";
}
SqlSource sqlSource = mappedStatement.getSqlSource();
PetDO pet = null;new PetDO();
if(petId>0) {
pet = new PetDO();
pet.setId(petId);
}
return sqlSource.getBoundSql(pet);
}
}
http://127.0.0.1:8080/getSqlSource?id=org.demo.dao.mapper.PetMapper.queryPetsByStartIdIfIdNotNull2
{"type":"class org.apache.ibatis.builder.annotation.ProviderSqlSource","info":"org.apache.ibatis.builder.annotation.ProviderSqlSource@152789ae"}
http://127.0.0.1:8080/getBoundSql2?id=org.demo.dao.mapper.PetMapper.queryPetsByStartIdIfIdNotNull2&petId=0
{"sql":"SELECT id,name,age FROM pet order by id asc","parameterMappings":[],"parameterObject":null}
http://127.0.0.1:8080/getBoundSql2?id=org.demo.dao.mapper.PetMapper.queryPetsByStartIdIfIdNotNull2&petId=1
{
"sql": "SELECT id,name,age FROM pet where id=? order by id asc",
"parameterMappings": [
{
"property": "id",
"mode": "IN",
"javaType": "java.lang.Long",
"jdbcType": null,
"numericScale": null,
"typeHandler": {
"rawType": "java.lang.Long"
},
"resultMapId": null,
"jdbcTypeName": null,
"expression": null
}
],
"parameterObject": {
"id": 1,
"name": null,
"age": null
}
}
https://gitee.com/dyyx/work2024/blob/master/demo/mybatis-paging-demo/src/main/java/org/demo/controller/HelloController.java
上一篇
下一篇
Mybatis SqlSource 与 BoundSql
小红书视频下载
羽毛球新手学习顺序
mybtais mybatisplus TkMybatis 原理
java final 字段 反射修改说明
煎荷包蛋小技巧