Mybatis(两表的操作)

1.准备pom.xml

<packaging>jar</packaging>
            <dependencies>
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.4.5</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.5</version>
            </dependency>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.12</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.10</version>
                <scope>test</scope>
            </dependency>
    </dependencies>

其中log4j和junit是非必须的,可以不要。

2.准备MySql数据库两个表,如user表和account表

    CREATE TABLE `user` (
      `id` SMALLINT(11) NOT NULL AUTO_INCREMENT,
      `username` VARCHAR(32) NOT NULL COMMENT '用户名称',
      `birthday` TIMESTAMP DEFAULT 0 COMMENT '生日',
      `sex` CHAR(1) DEFAULT '男' COMMENT '性别',
      `address` VARCHAR(256) DEFAULT '北京' COMMENT '地址',
      PRIMARY KEY  (`id`)
    ) ENGINE=INNODB DEFAULT CHARSET=utf8;
    CREATE TABLE `account` (
      `ID` SMALLINT(11) NOT NULL COMMENT '编号',
      `UID` SMALLINT(11) DEFAULT NULL COMMENT '用户编号',
      `MONEY` DOUBLE DEFAULT NULL COMMENT '金额',
      PRIMARY KEY  (`ID`),
      KEY `FK_Reference_8` (`UID`),
      CONSTRAINT `FK_Reference_8` FOREIGN KEY (`UID`) REFERENCES `user` (`id`)
    ) ENGINE=INNODB DEFAULT CHARSET=utf8;

3.配置SqlMapConfig.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">
    <!-- mybatis的主配置文件-->
    <configuration>
        <!-- 使用typeAliases配置别名,它只能配置domain中类的别名-->
        <typeAliases>
            <package name="com.study.domain"/>
        </typeAliases>
        <!-- 配置环境-->
        <environments default="mysql">
            <!-- 配置mysql的环境-->
            <environment id="mysql">
                <!-- 配置事务的类型-->
                <transactionManager type="JDBC"></transactionManager>
                <!-- 配置数据源(连接池)-->
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://localhost:3306/test"/>
                    <property name="username" value="root"/>
                    <property name="password" value="root"/>
                </dataSource>
            </environment>
        </environments>
        <!-- 指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件 -->
        <mappers>
            <package name="com.study.dao"/>
        </mappers>
    </configuration>

4.如要在查询account时并查询user

1.在account实体类中添加

    private User mUser;

    public User getUser() {
        return mUser;
    }

    public void setUser(User user) {
        mUser = user;
    }
    还有它的tostring方法
  1. 在accountDao的xml配置文件中
<!-- 定义account表的resultMap-->
    <resultMap id="accountMap" type="account">
        <id property="id" column="id"></id>
        <result property="uid" column="uid"></result>
        <result property="money" column="money"></result>
        <collection property="mUser" ofType="user">
            <id property="id" column="id"></id>
            <result property="username" column="username"></result>
            <result property="address" column="address"></result>
            <result property="sex" column="sex"></result>
            <result property="birthday" column="birthday"></result>
        </collection>
    </resultMap>

注意:标签中的属性property的值是在account中的'private User mUser'语句中的mUser

<!-- 查询所有-->
    <select id="findAll"  resultMap="accountMap">
        select u.*,a.id as aid,a.money from account a left outer join user u on u.id = a.uid
    </select>

注意:添加的是resultMap属性,而不是resultType属性

posted @ 2020-04-25 22:20  YoY丶  阅读(287)  评论(0)    收藏  举报