该部分代码已完成,欢迎参考
https://github.com/heibai23/MicroMessage
ognl支持java代码的调用
OGNL表达式
动态SQL拼接
OGNL是一个功能强大的表达式语言:OGNL支持java的方法。
XML属性的双引号冲突解决办法:使用转义引号""
OGNL中&&的转义:XML中不支持&&,需要使用转义字符,&&也可以使用OGNL特有操作符and
SQL拼接:使用#{传入的参数名},Mybatis处理这里时会把它处理为?,并对该?赋值。当Mybatis解析时会解析该参数并赋值,这里而且可以不需要考虑sql语句的空格等问题,只要写在标签中间,Mybatis会自动处理。

#{command} 只是取值和 OGNL 一样,但不是 OGNL 表达式,这里是 mybatis 对他进行处理,将会替换成 ? 。另外,xml 中要对 双引号 表示的空字符串转义,写法为 ""
OGNL中可以直接使用对象的方法。
xml中字符转义:& & | ' ' | " "
mybatis语句中的?用#{command}代替
parameterType的值是自定义类型要完整限定名,是java.lang下的类型则不需要,也可以是基本类型
<select id="queryMessageList" parameterType="com.bean.Message" resultMap="MessageResult">
SELECT id,command,description,content FROM message WHERE 1=1
<if test="command!=null and !"".equals(command.trim())">
AND command= #{command}
</if>
<if test="description!=null and !"".equals(description.trim())">
AND description like '%' #{description} '%' <!-- 三个字符串直接要有空格-->
<!--或者 AND description like concat('%',#{description},'%') -->
</if>
</select>Message message = new Message();
message.setCommand(command);
message.setDescription(description);
messageList = sqlSession.selectList("Message.queryMessageList",message);
在连接数据库的xml里改(Configuration.xml)
<dataSource type="UNPOOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/micro_message?characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</dataSource>
“url”地址上增加 (?characterEncoding=UTF-8"/>)
这样修改之后按照指令名称可以查询到结果,但是按照描述是查不到结果的
看%写法的
模糊匹配:
and DESCRIPTION like '%' #{description} '%'
mybatis中ognl表达式写sql语句条件
xml配置文件中部分符号需要转义
& --> &
" --> "