本节书摘来异步社区《Java EE核心框架实战》一书中的第2章,第2.5节,作者: 高洪岩,更多章节内容可以访问云栖社区“异步社区”公众号查看。
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所示。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。
相关资源:敏捷开发V1.0.pptx