Я хочу использовать MyBatis3 только для создания строки SQL (используя сопоставление xml), но получение SQL я недопустимо.
Пример: я получаю строку sql:
SELECT * FROM USER WHERE NAME = john
В этом sql нет ' char, окружающего строковое значение john
в mybatis.xml:
...
<mappers>
<mapper resource="sql1.xml"/>
</mappers>
...
sql1.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="sql1">
<select id="select1" parameterType="map" resultType="String" >
SELECT * FROM USERS
WHERE
name LIKE ${name} AND num = ${number}
</select>
</mapper>
в MyBatisSql.java:
SqlSessionFactory sessionFactory = ConnectionFactory.getSqlSessionFactory();
Configuration configuration = sessionFactory.getConfiguration();
Map pars = new HashMap<String, Object>();
pars.put("name", "john");
pars.put("number", 1345);
MappedStatement ms = configuration.getMappedStatement("sql1.select1);
BoundSql boundSql = ms.getBoundSql(params);
String sql = boundSql.getSql();
System.out.println(sql);
результат
SELECT * FROM USERS
WHERE
name LIKE john AND num = 12345
в этом SQL, строка john, не заключена в ' char поэтому он не является допустимым SQL (моя цель - создать только допустимую строку SQL, используя myBatis). Я бы хотел:
SELECT * FROM USERS
WHERE
name LIKE 'john' AND num = 12345
спасибо