本节书摘来异步社区《Java EE核心框架实战》一书中的第2章,第2.5节,作者: 高洪岩,更多章节内容可以访问云栖社区“异步社区”公众号查看。
2.5 将SQL语句作为字符串变量传入
Java EE核心框架实战
在MyBatis中也支持将SQL语句当成变量传入。
新建名为sqlStringVar的Java项目,映射文件userinfoMapping.xml的内容如下。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd">
<mapper namespace="mybatis.testcurd">
<select id="getUserinfo" parameterType="map" resultType="map">
select
id,username,password,age,insertdate
from
userinfo where id>#{id} order
by ${orderSql}
</select>
</mapper>```
Java类文件Run.java的代码如下。
public class Run {
public static void main(String[] args) {
try {
HashMap mapParam = new HashMap();
mapParam.put("id", 5);
mapParam.put("orderSql", "id desc");
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
.build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
List listUserinfo = sqlSession.selectList("getUserinfo",
mapParam);
for (int i = 0; i < listUserinfo.size(); i++) {
Map map = listUserinfo.get(i);
System.out.println(map.get("ID") + " " + map.get("USERNAME")
+ " " + map.get("PASSWORD") + " " + map.get("AGE")
+ " " + map.get("INSERTDATE"));
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}`
上述代码从map中get(字段名称)的形式取得字段对应的值,但字段名称在Oracle中是大写字母,所以这里的字段名称也必须要写成大写形式。为了支持方便的小写形式,可以在映射文件中为定义的SQL语句为字段指定一个别名。
select id "id",username "username",password "password",age "age"
这样从map中就可以以小写的形式取得字段值。
运行结果如图2-4所示。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。