1.properties属性
项目的目录结构:
修改四的配置文件如下:
<?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>
<properties resource="db.properties"> </properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>
创建db.properties:
url:jdbc:mysql://127.0.0.1:3306/ssm?autoReconnect=true&useUnicode=true&characterEncoding=utf8
driver:com.mysql.jdbc.Driver
username:root
password:root
再次测试通过。
2.settings全局参数:
开启二级缓存,延迟加载....
3.typeAliases别名配置:通过别名来替换配置文件中的参数,变量的全路径,简化开发:
默认别名,字符串,整数,双,布尔-----------------对应的映射类型为:---------------- - ---字符串,整型,双精度,布尔
修改mybatis-congfig :(命名空间的别名),注意,命名空间好像不支持别名,namespace的mapper类路径要写全,否则会报错。
<configuration>
<properties resource="db.properties"> </properties>
<typeAliases>
<!-- pojo类型的单个别名-->
<!--<typeAlias type="com.lmj.ssm.pojo.User" alias="User"/>-->
<!-- 包下的批量别名定义-->
<package name="com.lmj.ssm.pojo"/>
</typeAliases>
<environments default="development">
........
mapper.xml中更改:
<mapper namespace="com.lmj.ssm.mapper.UserMapper">
<select id="findUserById" parameterType="int" resultType="User">
select * from user where id=#{id}
</select>
类型控制器类型转换器:
默认支持的转换有
java类型:Date(java.util)---数据库的类型日期Date --- timestamp,Date --- time timestamp(java.sql)--- timestamp ............. .........
映射映射器:(批量扫描包下的映射文件)------想法中的一个大坑(重点记录说明)
<configuration>
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>
1.这是通过资源的单个文件的加载:(这种方式不用保证同接口同包同名,各大IDE都支持这种方式)
2.第二种方式:<mapper url =“文件路径名”>用法如下:
<mapper url =“file:E:/Study/myeclipse/_03_Test/src/cn/sdut/pojo/PersonMapper.xml”/>
3.通过映射器接口加载映射文件,前提,使用映射器代码,并遵循一些规范(如果是非注解模式的话XML配置文件必须也处于同一级包下,且与映射器类同名,即同包同名)
批量加载的写法:在构思中这的英文一个大坑(重点记录说明)
首先在放一下我的目录:
在MyBatis的-config.xml的文件中我是通过映射器接口加载映射文件(即批量映射器文件)的形式配置的,从目录中看出,文件啊,配置啊都遵循了规范(同包同名称)
<mappers>
<!--通过resource单个加载-->
<!-- <mapper resource="mapper/UserMapper.xml"/>-->
<!-- 通过mapper接口单个加载
<mapper class="com.lmj.ssm.mapper.UserMapper"/>
批量加载mapper-->
<package name="com.lmj.ssm.mapper"/>
</mappers>
但是运行时总是报绑定错误,或找不到方法...:
org.apache.ibatis.binding.BindingException:无效的绑定语句(未找到):com.lmj.ssm.mapper.UserMapper.findUserById
同样的代码放到蚀上跑就没有问题(蚀在打包时会将SRC / JAVA下的XML文件编译到的.class文件中),网上找了好久,终于解决,(想法出现无法自动映射映射问题)
导致的原因是mapper.xml没有放在资源文件中,在编译的时候想法不会将诸如.xml文件编译到类下面,应该要告诉想法将src / main / java中的mapper.xml文件编译到类文件中。请在pom.xm的<建立>中加入如下代码:
<resources>
<resource>
<directory>src/main/Java</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.* </include>
</includes>
</resource>
</resources>
给出我的pom文件:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com</groupId>
<artifactId>lmj</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<name>lmj Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!-- 导入java ee jar 包 -->
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
<!-- 导入Mysql数据库链接jar包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.36</version>
</dependency>
<!-- mybatis核心包 -->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
</dependencies>
<build>
<finalName>lmj</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/Java</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.* </include>
</includes>
</resource>
</resources>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.0.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.0</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
在思想中还有一个坑,它对JSP中的JSX语法的支持不太好,需要安装相应插件,或导入相关依赖来解决
遇到错误,多关注一下Tager的的文件,即IDE打包后的最终的项目文件,看是否因为某些因数导致某些文件漏到了