zoukankan      html  css  js  c++  java
  • mybatis多表查询,自动生成id

    主要是在配置文件中,配置好所要包含的字段。

    类关系:account----role,1对1

    account包含role类

    java类:

    public class Account{
       private Integer accountId;
        private String username;
        private String password;
        private Role role;
    }
    
    public class Role {
    	private Integer id;
    	private Integer leave;
    	private String name;
    }

    数据库表:

    --
    -- 表的结构 `account`
    --
    
    CREATE TABLE IF NOT EXISTS `account` (
      `accountId` int(32) NOT NULL AUTO_INCREMENT,
      `userName` varchar(32) COLLATE utf8_bin NOT NULL,
      `password` varchar(32) COLLATE utf8_bin NOT NULL,
      `roleId` int(32) NOT NULL,PRIMARY KEY (`accountId`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=1005 ;
    --
    -- 表的结构 `role`
    --
    
    CREATE TABLE IF NOT EXISTS `role` (
      `id` int(21) NOT NULL AUTO_INCREMENT,
      `r_leave` int(11) NOT NULL,
      `name` varchar(32) COLLATE utf8_bin NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=12 ;

    因为我是分开的,所有有两个配置文件。可以写在一个配置文件中

    account-resultmap.xml设置,在配置文件中,也包含了role类的所有对应

    <mapper namespace="accountMap">
    <!-- id 用于*-mapper.xml 中进行自动填值 ,-->
        <resultMap type="com.hoo.entity.Account" id="accountResultMap">
            <id property="accountId" column="accountId"/>
            <result property="username" column="userName"/>
            <result property="password" column="password"/>
            <association property="role" javaType="com.hoo.entity.Role">
                 <id property="id" column="id"/>
                 <result property="leave" column="r_leave"/>
                 <result property="name" column="name"/>
            </association>
        </resultMap>
    </mapper>

    mapper.xml设置,查的时候,直接查两表,mybatis自动对应数据

    <select id="getAllAccount" resultType="list" resultMap="accountMap.accountResultMap">
            <![CDATA[
                select * from account a,role r where a.roleId=r.id
            ]]>
        </select>
        
        <!-- accountResultMap是account-resultmap.xml中定义的resultmap -->
        <select id="getAccountById" parameterType="string" resultType="com.hoo.entity.Account" resultMap="accountMap.accountResultMap">
            <![CDATA[
                select * from account a,role r where a.accountId = #{id} and a.roleId=r.id
            ]]>
        </select>
    <!-- 自动生成id策略 -->
        <insert id="addAccount" useGeneratedKeys="true" keyProperty="accountId" parameterType="account">
            insert into account(accountId, status, username, password,phone,email,roleId)
            values(#{accountId}, #{status}, #{username}, #{password},#{phone},#{email},#{role.id})
        </insert>
  • 相关阅读:
    TCP 连接断连问题剖析
    libtool: link: you must specify an output file
    socket编程bind浮动ip
    epoll或者kqueue的原理是什么?
    推荐 30 款最好的免费项目管理软件
    QNX开发最完整图文教程(官方文档,非官方翻译)
    Android 4.X系列の界面设计中退出Android程序的代码
    APScheduler 定时任务系统
    给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。
    APSchenuler嵌入Django
  • 原文地址:https://www.cnblogs.com/v-weiwang/p/4789083.html
Copyright © 2011-2022 走看看