您的当前位置:首页Mybatis配置文件SqlMapConfig.xml中的标签

Mybatis配置文件SqlMapConfig.xml中的标签

2023-11-10 来源:六九路网

SqlMapConfig.xml配置文件中的属性1 配置内容

properties(属性)

settings(全局配置参数)

typeAliases(类型别名)

typeHandlers(类型处理器)

objectFactory(对象工厂)

plugins(插件)

environments(环境集合属性对象)

environment(环境子属性对象)

transactionManager(事务管理)

dataSource(数据源)

mappers(映射器)

注: sqlMapConfg.xml文件中变迁的配置是有顺序的, 如果标签存在, 则必须严格安装上面的顺序进行编写, 不然报错

2 properties(属性)

1> 定义数据库连接参数

<!-- 配置属性 -->    <properties>        <property name="jdbc.driver" value="com.mysql.jdbc.Driver"/>        <property name="jdbc.url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8"/>        <property name="jdbc.username" value="root"/>        <property name="jdbc.password" value="luoji1025"/>    </properties>

 

2>定义数据源(将连接参数配置在databases.properties属性文件中)

databases.properties属性文件内容:

jdbc.driver=com.mysql.jdbc.Driver  jdbc.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8  jdbc.username=root  jdbc.password=luoji1025

在sqlMapConfig.xml中的属性标签中引入属性文件

<properties resource="databases.properties"></properties>

使用ognl表达式取出属性文件或者是配置属性参数的值

    <!-- 和spring整合后 environments配置将废除-->    <environments default="development">        <environment id="development">        <!-- 使用jdbc事务管理-->            <transactionManager type="JDBC" />        <!-- 数据库连接池-->            <dataSource type="POOLED">                <property name="driver" value="${jdbc.driver}" />                <property name="url" value="${jdbc.url}" />                <property name="username" value="${jdbc.username}" />                <property name="password" value="${jdbc.password}" />            </dataSource>        </environment>    </environments>

3 typeAliases(类型别名)(该标签必须配置在environments标签之上)

    <!-- 配置别名扫描 -->    <typeAliases>        <typeAlias type="cn.rodge.entity.User" alias="user"/>        <package name="cn.rodge"/>    </typeAliases>

4 mappers(映射器)

    <!-- 配置mapper映射文件 -->    <mappers>        <mapper resource="sqlmap/User.xml"/>        <package name="cn.rodge.dao"/>    </mappers>

Mybatis配置文件SqlMapConfig.xml中的标签

标签:dev   ognl   plugins   utf-8   led   处理器   package   全局   apc   

小编还为您整理了以下内容,可能对您也有帮助:

MyBatis配置文件Configuration.xml里typeAliases标签有什么用?

【typeAliases标签】是写实体类的别名,写了之后可以在写Sql配置文件。

例如<select>标签中的属性就可以不用写实体的具体路径,直接用别名就可以替代。

例子:

没有别名这样写<selectresultType="com.sjh.entity.VoteUser">

写了别名就可以这样写<selectresultType="VoteUsers">

直接写别名就可以不用再写实体的路径了,VoteUsers就能在任何地方代替“com.sjh.entity.VoteUser”被使用。

为什么mabatis的配置sqlMapConfigxml文件中文注释报错

Error如下:
Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException:
### Error building SqlSession.
### Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 2 of 2-byte UTF-8 sequence.
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.Java:30)
at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:82)
at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:66)
at mini..impl.main(impl.java:20)
Caused by: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 2 of 2-byte UTF-8 sequence.
at org.apache.ibatis.parsing.XPathParser.createDocument(XPathParser.java:259)
at org.apache.ibatis.parsing.XPathParser.<init>(XPathParser.java:125)
at org.apache.ibatis.builder.xml.XMLConfigBuilder.<init>(XMLConfigBuilder.java:78)
at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:79)
... 2 more
Caused by: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 2 of 2-byte UTF-8 sequence.
at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.invalidByte(UTF8Reader.java:674)
at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(UTF8Reader.java:362)
at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(XMLEntityScanner.java:1742)
at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.scanData(XMLEntityScanner.java:1256)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.scanComment(XMLScanner.java:756)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanComment(XMLDocumentFragmentScannerImpl.java:1036)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2945)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:225)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:283)
at org.apache.ibatis.parsing.XPathParser.createDocument(XPathParser.java:257)
... 5 more

sqlMapConfog.xml文件如下:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="com.MySQL.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/webdb" />
<property name="username" value="root" />
<property name="password" value="123" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- 注册userMapper.xml文件,
userMapper.xml位于me.gacl.mapping这个包下,所以resource写成me/gacl/mapping/userMapper.xml-->
<mapper resource="mini/mybatiesMapping/userMapper.xml"/>
</mappers>
</configuration>

Reson:
是XML文件的中文注释引起的异常,去掉配置文件中的中文注释或改用英文描述则可以通过
后来发现是配置文件中采用:单数个中文或字母后跟单数个中文再用“-->”结束注释(中文后不加空格)行得通。
如:<!--单数个中文-->、<!--a单数个中文--> ,对此异常可以采用在左右边界加上空格的方式解决。 如像这样<!-- 中文注解 -->
也可能是配置文件sqlMapConfig.xml或映射文件中http://www.ibatis.com/dtd/sql-map-config-2.dtd"> 含有多个空格的原因

为什么mabatis的配置sqlMapConfigxml文件中文注释报错

Error如下:
Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException:
### Error building SqlSession.
### Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 2 of 2-byte UTF-8 sequence.
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.Java:30)
at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:82)
at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:66)
at mini..impl.main(impl.java:20)
Caused by: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 2 of 2-byte UTF-8 sequence.
at org.apache.ibatis.parsing.XPathParser.createDocument(XPathParser.java:259)
at org.apache.ibatis.parsing.XPathParser.<init>(XPathParser.java:125)
at org.apache.ibatis.builder.xml.XMLConfigBuilder.<init>(XMLConfigBuilder.java:78)
at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:79)
... 2 more
Caused by: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: Invalid byte 2 of 2-byte UTF-8 sequence.
at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.invalidByte(UTF8Reader.java:674)
at com.sun.org.apache.xerces.internal.impl.io.UTF8Reader.read(UTF8Reader.java:362)
at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.load(XMLEntityScanner.java:1742)
at com.sun.org.apache.xerces.internal.impl.XMLEntityScanner.scanData(XMLEntityScanner.java:1256)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.scanComment(XMLScanner.java:756)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanComment(XMLDocumentFragmentScannerImpl.java:1036)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2945)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:225)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:283)
at org.apache.ibatis.parsing.XPathParser.createDocument(XPathParser.java:257)
... 5 more

sqlMapConfog.xml文件如下:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="com.MySQL.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/webdb" />
<property name="username" value="root" />
<property name="password" value="123" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- 注册userMapper.xml文件,
userMapper.xml位于me.gacl.mapping这个包下,所以resource写成me/gacl/mapping/userMapper.xml-->
<mapper resource="mini/mybatiesMapping/userMapper.xml"/>
</mappers>
</configuration>

Reson:
是XML文件的中文注释引起的异常,去掉配置文件中的中文注释或改用英文描述则可以通过
后来发现是配置文件中采用:单数个中文或字母后跟单数个中文再用“-->”结束注释(中文后不加空格)行得通。
如:<!--单数个中文-->、<!--a单数个中文--> ,对此异常可以采用在左右边界加上空格的方式解决。 如像这样<!-- 中文注解 -->
也可能是配置文件sqlMapConfig.xml或映射文件中http://www.ibatis.com/dtd/sql-map-config-2.dtd"> 含有多个空格的原因

谁能跟我解释一下Mybatis配置文件中这些语句的含义?最好帮我把里面标签含义说出来就行了

typeAliases标签 是写实体类的别名,写了之后可以在写Sql配置文件例如<select>标签中的属性就可以不用写实体的具体路径直接用别名就可以了,可以简化代码给你看个例子:没有别名这样写<select resultType="com.sjh.entity.VoteUser"> 写了别名就可以这样写<select resultType="VoteUsers"> 直接写别名就可以不用再写实体的路径了,VoteUsers就能在任何地方代替“com.sjh.entity.VoteUser”被使用。如果很多属性涉及到实体类,直接写别名很方便的。你说你删了程序照样跑,写配置的时候你一定是没有应用到别名,都写得实体路径。希望通过我的一番解释你能明白这个标签的用途。

mybatis if where标签怎么使用

方法/步骤

先看不加判断的sql语句怎么写?

我们看到where和and。也就是说,当username和sex都有值的时候 使用where和and

那如果只有sex怎么办?或者只有username怎么办?这种情况下,上面语句就会出问题了。

所以,可以使用where标签和if标签。

小二,先上截图,给大爷们看看,然后咱们在讲解。

在Mapper-User.xml文件中:

接下来讲解where、if标签含义:

<where>:声明where标签开始

</where>:表示where标签结束

<if>:if标签开始

test:是判断的表达式。

注意,在表达式中并且是用字母and而非使用&符号

字符串判断双引号套单引号使用

</if>:if标签结束

where标签会自动判断前面是否有字段,如果有字段会使用and sex=${sex}这个语句。

如果没有字段,and会被忽略直接跟在where后面。

也就是说,如果username为空但是sex不为空的话。输入的sql又是什么?

username和sex都存在的测试类:

执行后控制台输入的sql语句为:

如果username为空只有sex有值,会报错吗?

请看测试类:

再看,执行后输出的sql语句:

总结如下:

显示全文