ssm之路(5)mybatis-config.xml配置文件

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打包后的最终的项目文件,看是否因为某些因数导致某些文件漏到了

猜你喜欢

转载自blog.csdn.net/qq_41063141/article/details/83784672
今日推荐