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语句:
总结如下: