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学习总结——优化MyBatis配置文件中的配置

MyBatis——优化MyBatis配置文件中的配置

Mybatis框架学习总结-优化Mybatis配置文件中的配置

如何让idea自动创建mybatis配置文件