《Java EE核心框架实战》—— 2.5 将SQL语句作为字符串变量传入

简介: Java EE核心框架实战 在MyBatis中也支持将SQL语句当成变量传入。 新建名为sqlStringVar的Java项目,映射文件userinfoMapping.xml的内容如下。

本节书摘来异步社区《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所示。

94a7d9080b9c0eff935a5e02e2c8e6b54913a505

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

相关文章
|
9天前
|
Java
Java 字符串分割split空字符串丢失解决方案
Java 字符串分割split空字符串丢失解决方案
|
10天前
|
Java
Java 变量命名规则
4月更文挑战第6天
|
12天前
|
设计模式 安全 Java
Java并发编程实战:使用synchronized关键字实现线程安全
【4月更文挑战第6天】Java中的`synchronized`关键字用于处理多线程并发,确保共享资源的线程安全。它可以修饰方法或代码块,实现互斥访问。当用于方法时,锁定对象实例或类对象;用于代码块时,锁定指定对象。过度使用可能导致性能问题,应注意避免锁持有时间过长、死锁,并考虑使用`java.util.concurrent`包中的高级工具。正确理解和使用`synchronized`是编写线程安全程序的关键。
|
30天前
|
SQL Java 应用服务中间件
Java项目防止SQL注入的四种方案
Java项目防止SQL注入的四种方案
33 0
|
1月前
|
存储 Java
JAVA字符串与其他类型数据的转换
JAVA字符串与其他类型数据的转换
27 4
|
9天前
|
Java API 开发者
Java 8新特性之函数式编程实战
【4月更文挑战第9天】本文将深入探讨Java 8的新特性之一——函数式编程,通过实例演示如何运用Lambda表达式、Stream API等技术,提高代码的简洁性和执行效率。
|
20天前
|
Java
java 8 数组转字符串并以逗号分隔
java 8 数组转字符串并以逗号分隔
11 0
|
20天前
|
存储 安全 Java
【Java技术专题】「Guava开发指南」手把手教你如何进行使用Guava工具箱进行开发系统实战指南(不可变集合篇)
【Java技术专题】「Guava开发指南」手把手教你如何进行使用Guava工具箱进行开发系统实战指南(不可变集合篇)
30 1
|
20天前
|
Java API Apache
【Java技术专题】「Guava开发指南」手把手教你如何进行使用Guava工具箱进行开发系统实战指南(基础编程篇)
【Java技术专题】「Guava开发指南」手把手教你如何进行使用Guava工具箱进行开发系统实战指南(基础编程篇)
43 0