2017.11.22总结

来源:互联网 发布:plc显示屏编程软件 编辑:程序博客网 时间:2024/06/09 15:24

之前学过mybatis,可惜忘得差不多了,现在需要使用,于是复习了一下。遇到一些问题:

环境:mac
IDE:idea
maven项目

问题一:读不到mybatis的配置文件

src/main/java和src/test/java
这两个目录中的所有*.java文件会分别在comile和test-comiple阶段被编译,编译结果分别放到了target/classes和targe/test-classes目录中,但是这两个目录中的其他文件都会被忽略掉。
我在src/main/java/uestc/下创建了一个conf.xml文件,但是程序

Resources.getResourceAsReader("uestc/config/conf.xml");

始终读不到这个文件,其实就是因为上面引用的这句话:除了*。java其他文件会被忽略掉。而getResourceAsRead貌似是读(暂时理解为这个) 存class文件目录下的东西,因为xml被maven过滤掉了,存class文件的目录中并没有xml。
解决办法:
在pom。xml文件中添加:

<resources>      <resource>        <directory>src/main/resources</directory>        <excludes>          <exclude>**/*.properties</exclude>          <exclude>**/*.xml</exclude>        </excludes>        <filtering>false</filtering>      </resource>      <resource>        <directory>src/main/java</directory>        <includes>          <include>**/*.properties</include>          <include>**/*.xml</include>        </includes>        <filtering>false</filtering>      </resource>    </resources>

目的是让maven不要把。properties和。xml类型的文件过滤掉了。
问题解决。

今天把mybatis中简单的1对1的增删改查熟悉了一下,然后对一对多的情况,看了一下。形如:
User类中还有Post类的List,这种去数据库中拿User的时候需要把Port的集合一起拿出来,所以有下面这个User。xml的配置文件

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"        "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="uestc.model.UserMapper">    <resultMap id="resultUserMap" type="User">        <result property="id" column="user_id"/>        <result property="username" column="username"/>        <result property="mobile" column="mobile" />        <collection property="posts" ofType="Post" column="useri3223d">            <id property="id" column="post_id" javaType="int" jdbcType="INTEGER"/>            <result property="title" column="title" javaType="string" jdbcType="VARCHAR"/>            <result property="content" column="content" javaType="string" jdbcType="VARCHAR"/>        </collection>    </resultMap>    <select id="getUser" resultMap="resultUserMap" parameterType="int">        SELECT u.*,p.*        FROM user u, post p        WHERE u.id=p.userid AND u.id=#{user_id}    </select></mapper>

在简单的1对1的情况中select大概像这个样子

 <select id="" resultType="" parameterType=""></select>

返回的直接就是一个普通的类 这类里面没有集合
但是上面那个

<select id="getUser" resultMap="resultUserMap" parameterType="int">        SELECT u.*,p.*        FROM user u, post p        WHERE u.id=p.userid AND u.id=#{user_id}    </select>

返回的就是resultUserMap 里面就是User这个类中有集合Post
所以才有了这个:

<resultMap id="resultUserMap" type="User">        <result property="id" column="user_id"/>        <result property="username" column="username"/>        <result property="mobile" column="mobile" />        <collection property="posts" ofType="Post" column="useri3223d">            <id property="id" column="post_id" javaType="int" jdbcType="INTEGER"/>            <result property="title" column="title" javaType="string" jdbcType="VARCHAR"/>            <result property="content" column="content" javaType="string" jdbcType="VARCHAR"/>        </collection>    </resultMap>

里面定义了User的组成,id,username,mobile然后就是collection:posts
这里的posts就是User中的List port ports 然后定义了post中的各个属性。
这个collection中的column是干嘛的不是很清楚。
貌似后面也没有用到。

大概就是这样。

原创粉丝点击