mybatis 配置文件文件中 <![cdata[ $value ]]> 是啥意思
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis 配置文件文件中 <![cdata[ $value ]]> 是啥意思相关的知识,希望对你有一定的参考价值。
<update id = "excute" parameterType="java.lang.String">
<![CDATA[ $value]]>
</update>
请问一下 <![CDATA[ $value]]> 是什么意思? 为什么要用$value 去取传入的这个变量,还有种写法是#id ,这两种有什么区别?
<select id = "excute" parameterType="java.lang.String">
select * from student where id = #id
</select >
这两种取得变量的方式有什么不一样啊?为什么一个用# 一个用$ ,用法和区别是什么?请高手解释一下
value是不是可能包含xml格式的东西,<![CDATA[ ....]]>,这个在xml里表示该部分内容不会被xml解析器解析。
CDATA[ $value 如果value是sql语句,那这里就是个动态的sql语句了,最终会执行这条sql语句,select from student where id = #id 如果你这个id也传入个sql语句,这里就会把它当成一个查询值了<update id = "excute" parameterType="java.lang.String">
<![CDATA[ $value]]>
</update><select id = "excute" parameterType="java.lang.String">
select * from student where id = #id
</select >include<iostream>
using namespace std;
char *deletechar(char *a)
int len=strlen(a);
char *b=new char();
int k=0;
for(int i=0;i<len;i++)
if(a[i]>='0' && a[i]<='9')
b[k]=a[i];k++;
参考技术A value是不是可能包含xml格式的东西,<![CDATA[ ....]]>,这个在xml里表示该部分内容不会被xml解析器解析 参考技术B 像你<![CDATA[ $value]]> 如果value是sql语句,那这里就是个动态的sql语句了,最终会执行这条sql语句。select * from student where id = #id 如果你这个id也传入个sql语句,这里就会把它当成一个查询值了 参考技术C #能做数据类型匹配,$则不可以。
像你<![CDATA[ $value]]> 如果value是sql语句,那这里就是个动态的sql语句了,最终会执行这条sql语句。
select * from student where id = #id 如果你这个id也传入个sql语句,这里就会把它当成一个查询值了。追问
select * from student where id = #id 如果你这个id也传入个sql语句,这里就会把它当成一个查询值了?是什么意思?
假如说我id传入的一个参数
session.selectList("queryAllStudent", "(select id from student where name = 'zs' )" );
#id $id 分别会对他怎么处理?
#
select * from student where id =select id from student where name = 'zs'
如果id是数值型,会报错。
$
select * from student where id =select id from student where name = 'zs' )
这里应该是sql错误了
MyBatis 配置文件
1、properties
有三种配置方式:
a、采用java属性文件配置[ ***.properties ],在mybatis-config.xml 中如下调用:
<properties resource="jdbc.properties"/>
b、采用mybatis-config.xml 中 properties 属性进行配置,如下:
<properties>
<property name="driver" value="com.mysql.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/db_name"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</properties>
c、使用java代码load配置文件 ***.properties,然后通过参数将配置传入,如下:
SqlSessionFactory sqlSessionFactory1 = new SqlSessionFactoryBuilder().build(InputStream inputStream, Properties properties)
SqlSessionFactory sqlSessionFactory1 = new SqlSessionFactoryBuilder().build(Reader reader, Properties properties)
SqlSessionFactory sqlSessionFactory1 = new SqlSessionFactoryBuilder().build(InputStream inputStream, String environment, Properties properties)
SqlSessionFactory sqlSessionFactory1 = new SqlSessionFactoryBuilder().build(Reader reader,String nvironment,Properties properties)
加载顺序:
配置文件properties体内读取 -- 》 配置文件properties的 url/resource文件中读取 -- 》 参数传递的属性中读取
优先级顺序:
参数传递的属性中读取(优先级最高) -- 》 配置文件properties的url/resource文件中读取(次之) -- 》 配置文件properties体内读取(优先级最低)
如果三个地方都有配置,高优先级覆盖低优先级的配置
2、
以上是关于mybatis 配置文件文件中 <![cdata[ $value ]]> 是啥意思的主要内容,如果未能解决你的问题,请参考以下文章
转MyBatis学习总结——优化MyBatis配置文件中的配置
MyBatis学习总结——优化MyBatis配置文件中的配置