在mybatis中怎么将 SELECT nextval('cust1.cloud_service_manager_id_seq'::regclass)其中的cust1,cloudservice_manageer,_id_seq变成三个动态的参数
时间: 2024-01-21 11:19:55 浏览: 79
mybaits refid patch
5星 · 资源好评率100%
在MyBatis中可以使用动态SQL语句来实现将SELECT nextval('cust1.cloud_service_manager_id_seq'::regclass)语句中的cust1、cloud_service_manager、_id_seq三个参数动态传入的操作。具体实现步骤如下:
1. 在Mapper.xml文件中定义一个select语句,使用#{}占位符代替动态传入的参数,如下所示:
```
<select id="getNextVal" resultType="java.lang.Long">
SELECT nextval(#{schema}.#{tableName}_#{columnName}_seq'::regclass)
</select>
```
2. 在Java代码中调用MyBatis的SqlSession对象的selectOne()方法执行该select语句,并传入三个参数,如下所示:
```
String schema = "cust1";
String tableName = "cloud_service_manager";
String columnName = "id";
Long nextVal = sqlSession.selectOne("getNextVal",
ImmutableMap.of("schema", schema,
"tableName", tableName,
"columnName", columnName));
```
在这里使用了Google的Guava库中的ImmutableMap来封装参数,这样可以避免在代码中直接使用Map对象带来的类型不安全和可变性带来的风险。
阅读全文