?
1
2
3
<select id="executeSql" resultType="map">
${_parameter}
</select>
你可以如下调用:
?
1
sqlSession.selectList("executeSql", "select * from sysuser where enabled = 1")
或者你可以在 XXMapper.java 接口中定义如下方法:
?
1
List<Map>executeSql(String sql)
然后使用接口调用方法:
?
1
xxMapper.executeSql("select * from sysuser where enabled = 1")
上面这些内容可能都会,下面在此基础上再复杂一点。
假如像上面SQL中的enabled = 1我想使用参数方式传值,也就是写成 enabled = #{enabled},如果你没有遇到过类似这种需求,可能不明白为什么要这么写,举个例子,要实现一种动态查询,可以在前台通过配置 SQL,提供一些查询条件就能实现一个查询的功能(为了安全,这些配置肯定是开发或者实施做的,不可能让用户直接 *** 作数据库)。
针对这个功能,使用 MyBatis 实现起来相当容易。配置 SQL 肯定要执行,用上面讲的这种方式肯定可以执行 SQL,如何提供参数呢?参数就是enabled = #{enabled}中的#{enabled}部分。如果再多一些条件,一个配置好的 SQL 如下:
?
1
2
3
select * from sysuser
where enabled = #{enabled}
and userName like concat('%',#{userName},'%')
这种情况下,该怎么用 MyBatis 实现呢?
首先 XML 中修改如下:
?
1
2
3
<select id="executeSql" resultType="map">
${sql}
</select>
接口中的方法修改为:
?
1
List<Map>executeSql(Map map)
然后调用方法:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
Map map = new HashMap()
//这里的 sql 对应 XML 中的 ${sql}
map.put("sql", "select * from sysuser "
+ " where enabled = #{enabled} "
+ " and userName like concat('%',#{userName},'%')")
//#{enabled}
map.put("enabled", 1)
//#{userName}
map.put("userName", "admin")
//接口方式调用
List<Map>list = xxMapper.executeSql(map)
//sqlSession方式调用
你们点踩的,上面的回答已经很好了。
首先User类里需要2个字段id和myid
id对应自增的序列号,myid对应手动写入的主键
替换下上面的selectKey部分
<selectKey resultType="java.lang.Long" order="BEFORE" keyProperty="id">SELECT SEQ_USER_ID.nextval as id from dual
</selectKey>
注意添加了一个 order="BEFORE"
意思是在执行insert 语句前查询序列号并保存到User的id字段中
此时User的id字段就有值了,再执行插入语句。
执行成功后要取出自增的id号直接user.getId()
mybaits是对jdbc的封装,一样可以执行sql语句,而truncate也算sql语句,所以直接写sql语句配置在mapper.xml中,再用你惯用额方式调用即可。
1:在Mybatis配置文件中加上以下配置:
<!-- 选择log4j为Mybatis的记录日志文件-->
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
这个配置是告诉Mybatis使用log4j作为日志输出的工具。
2:在log4j配置文件中加一行代码:
log4j.logger.包名=debug(错误)
这里有一个小错误,应该是mapper文件的空间命名:
列如:log4j.logger.映射文件命名空间名=debug
保证mapper包下面有你项目的映射文件就好了,如果想更具体,只输出哪一个mapper文件的SQL,log4j.logger.org.jypj.xbkc.mapper.CourseOutlineMapper=debug
SQL,参数,总行数都有,是不是很好用。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)