说明 / 示例
# 通用dao层
```java
@Repository
public interface DynamicSqlProvider<T>{
/**
* 查询list结果
* @param queryParam
* @param <R>
* @return
*/
@SelectProvider(type= DynamicMapperCustomSql.class,method = "selectInfoSql")
<R>List<T> selectListInfoSql(QueryParam queryParam);
@SelectProvider(type= DynamicMapperCustomSql.class,method = "selectCountInfoSql")
@Results({
@Result(property = "count", column = "count")
})
int selectCountInfoSql(QueryParam queryParam);
/**
* 查询list结果
* @param queryParam
* @param <R>
* @return
*/
@SelectProvider(type= DynamicMapperCustomSql.class,method = "selectInfoBySql")
<R>List<T> selectListInfoByModel(QueryParam queryParam);
/**
* 查询记录信息
* @param queryParam
* @return
*/
@SelectProvider(type= DynamicMapperCustomSql.class,method = "selectInfoSql")
T selectInfoSql(QueryParam queryParam);
/**
* 执行动态sql
* @param queryParam
*/
@DeleteProvider(
type = DynamicMapperCustomSql.class,
method = "executeInfoByModel"
)
void executeInfoByModel(QueryParam queryParam);
@DeleteProvider(
type = DynamicMapperCustomSql.class,
method = "executeInfoBySql"
)
void executeInfoBySql(String sql);
/**
* 更新单条记录
* @param queryParam
*/
@UpdateProvider(type= DynamicMapperCustomSql.class, method = "updateInfoSql")
void updateInfoSql(QueryParam queryParam);
/**
* 删除单条数据
* @param queryParam
*/
@DeleteProvider(type= DynamicMapperCustomSql.class, method = "deleteInfoSql")
void deleteInfoSql(QueryParam queryParam);
/**
* 插入单条数据
* @param queryParam
*/
@InsertProvider(type= DynamicMapperCustomSql.class, method="insertInfoSql")
void insertInfoSql(QueryParam queryParam);
/**
* 插入多条数据
* @param list
*/
@InsertProvider(type = DynamicMapperCustomSql.class,method = "batchInsertInfoSql")
void batchInsertInfoSql(@Param("list") List<QueryParam> list);
}
```
# 动态Pojo对象注解

```java
@Data
@SqlTableInfo(tableName = "t_user")
public class VO extends QueryParam {
@SqlInfoFiled(name="test_id",primary=true)
private String testId;
@SqlInfoFiled(name="v1_type")
private String type;
@SqlInfoFiled(name="bill_main_id")
private String billMainId;
}
```
# Sql生成测试样例
```java
private static void selectSql() {
DynamicMapperCustomSql dynamicMapperCustomSql=new DynamicMapperCustomSql();
VO vo=new VO();
vo.setSql("select t1.* from t_user t1");
String str=dynamicMapperCustomSql.selectInfoBySql(vo);
System.out.println(str);
}
public static void insert(){
DynamicMapperCustomSql dynamicMapperCustomSql=new DynamicMapperCustomSql();
VO vo=new VO();
String str=dynamicMapperCustomSql.insertInfoSql(vo);
System.out.println(str);
}
public static void batchInsert(){
DynamicMapperCustomSql dynamicMapperCustomSql=new DynamicMapperCustomSql();
VO vo=new VO();
VO vo1=new VO();
List<VO> list=new ArrayList<>();
list.add(vo);
list.add(vo1);
HashMap map=new HashMap();
map.put("list",list);
String str=dynamicMapperCustomSql.batchInsertInfoSql(map);
System.out.println(str);
}
public static void select(){
DynamicMapperCustomSql dynamicMapperCustomSql=new DynamicMapperCustomSql();
VO vo=new VO();
String str=dynamicMapperCustomSql.selectInfoSql(vo);
System.out.println(str);
}
```
# 项目测试
## 1.数据库对象
```java
@SqlTableInfo(tableName = "t_bill_data")
@Data
public class BillInfoVO extends QueryParam {
@SqlInfoFiled(name = "bill_main_id",primary = true)
private String billMainId;
@SqlInfoFiled(name = "bill_code")
private String billCode;
@SqlInfoFiled(name = "json_data")
private String jsonData;
}
```
## 2.实现类调用
```java
@Service
public class CctvBillInfoServiceImpl implements ICctvBillInfoService {
@Autowired
private DynamicSqlProvider dynamicProvider;
@Override
public void backUpdateFundPaymentInfo(FundBackUpdateParamVO paramVO, String userId) {
BillInfoVO vo=new BillInfoVO();
vo.setBillMainId(paramVO.getFundPaymentInfoVOS().get(0).getBillMainId());
BillInfoVO billInfoVO= (BillInfoVO) dynamicProvider.selectInfoSql(vo);
String jsonData=billInfoVO.getJsonData();
String json1=jsonData;
BillDataVO billDataVO=JSONObject.parseObject(jsonData,BillDataVO.class);
}
@Override
public void testBackUpdateFundPaymentInfo() {
BillInfoVO vo=new BillInfoVO();
vo.setBillMainId("00477da6fbb811e9ae8403b570a6adc6");
List<BillInfoVO> billInfoVOS=dynamicProvider.selectListInfoSql(vo);
if(billInfoVOS.size()>0){
BillInfoVO billInfoVO=billInfoVOS.get(0);
}
System.out.println(billInfoVOS.toString());
}
}
```