• ibatis的联合查询详解


    和一般查询区别不同的有三个地方

     1、首先是实体里面,以前存的是string 现在肯定要修改为 对象

    学生类

    package bean;
    
    import java.sql.Timestamp;
    import java.util.Date;
    
    import baseparam.DeptBean;//存对象
    
    public class StudentBean
    {
     private String id;
     
     private String name;
     
     private String email;
     
     private Date birthday;
     
     private DeptBean dept;
     
     public DeptBean getDept()
     {
      return dept;
     }
    
     public void setDept(DeptBean dept)
     {
      this.dept = dept;
     }
    
     public String getId()
     {
      return id;
     }
    
     public void setId(String id)
     {
      this.id = id;
     }
    
     public Date getBirthday()
     {
      return birthday;
     }
    
     public void setBirthday(Date birthday)
     {
      this.birthday = birthday;
     }
    
     public String getName()
     {
      return name;
     }
    
     public void setName(String name)
     {
      this.name = name;
     }
    
     public String getEmail()
     {
      return email;
     }
    
     public void setEmail(String email)
     {
      this.email = email;
     }
    
     public StudentBean(String name)
     {
      super();
      this.name = name;
     }
    
     public StudentBean()
     {
      super();
      }
     
    }

    2、在配置文件中指定部门实体路径(/ibatis/src/SqlMapConfig.xml)

     SqlMapConfig.xml文件:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"
    "http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
    <configuration>
     <typeAliases>
      <typeAlias type="bean.StudentBean" alias="studentBean" />
      
      <!-- 指定部门实体路径-->
      <typeAlias type="baseparam.DeptBean" alias="deptBean"/>
     </typeAliases>
     
     <environments default="development">
      <environment id="development">
       <transactionManager type="JDBC" />
       <dataSource type="UNPOOLED">
        <property name="driver" value="oracle.jdbc.driver.OracleDriver" />
        <property name="url"
         value="jdbc:oracle:thin:@192.168.17.201:1521:DEPPONIT" />
        <property name="username" value="deppon009" />
        <property name="password" value="dpit20090511" />
       </dataSource>
      </environment>
     </environments>
     <mappers>
      <mapper resource="Student.xml" />
     </mappers>
    </configuration>

    3、最后一个就是修改mapper文件了(/ibatis/src/Student.xml)

    Student.xml文件:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
    "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
    <mapper namespace="student">
    
     <sql id="studentColumn">
      fid,
      fname,
      fbirthday
     </sql>
     <select id="getAll" resultType="studentBean" resultMap="studentResultMap">
      select stu.fid fid,
       stu.fname fname,
       dept.fid deptid,
       dept.fname deptname,
       stu.fbirthday
      from t_student stu
       inner join t_afei_dept dept on dept.fid = stu.fdept
     </select>
     
     <select id="getByID" resultType="studentBean" resultMap="studentResultMap">
      select stu.fid fid,
       stu.fname fname,
       dept.fid deptid,
       dept.fname deptname,
       stu.fbirthday
      from t_student stu
       inner join t_afei_dept dept on dept.fid = stu.fdept
      where stu.fid = #{id}
     </select>
     
     <insert id="add" parameterType="studentBean">
      insert into t_student(fid, fname, fbirthday) values
       ( newbosid('SFSAFSDF'),
        #{name, jdbcType=VARCHAR},
        #{birthday}
       )
     </insert>
     
     <delete id="deleteById" parameterType="int">
      delete from t_student where fid = #{id}
     </delete>
     
     <update id="updateStudent" parameterType="studentBean">
      update t_student t set t.fname = #{name}, t.fbirthday = #{birthday}
      where t.fid = #{id}
     </update>
     
     <!-- 数据库字段和Bean对象字段映射 -->
     <resultMap type="studentBean" id="studentResultMap">
      <id property="id" column="fid"/>
      <result property="name" column="fname"/>
      <result property="birthday" column="fbirthday"/>
      
      <!-- 联合查询 property中的名字应该和deptBean这个名字一致
       column中的名字应该和查询时的别名一样 -->
      <association property="dept" column="fdept" javaType="deptBean">
       <id property="id" column="deptid"/>
       <result property="name" column="deptname"/>
       <result property="num" column="deptnum"/>
      </association>
     </resultMap>
     </mapper>

    其他地方和一般的配置一样

    最后测试类

    public void getAll()
     {
      StudentDao dao = new StudentDaoImpl();
      
      List<StudentBean> students = dao.getAllStudents();
      
      for(StudentBean c : students)
      {
       DeptBean dept = c.getDept();
       System.out.println("student'id is\t" + c.getId());
       System.out.println("student'name is\t" + c.getName());
       if(dept != null)
       {
        
        System.out.println("dept'name is\t" + dept.getName());
       }
       System.out.println("------------------------------");
      }
     }
  • 相关阅读:
    Python经典的算法题【多测师】
    百度流氓驱动bd0001.sys【多测师】
    github上的前端面试题
    利用H5 FormData 实现表单中多图上传(可带其他如String类型数据)
    border-color的深入理解
    一个好玩的小制作,以及在<a/>中的标签href="javascript:;"/href="javascript:void(0);"/href="javascript:"的用法
    css进行网站布局
    Mybatis中的<trim>标签应用
    css居中小技巧
    css布局模型
  • 原文地址:https://www.cnblogs.com/langtianya/p/3023737.html
Copyright © 2020-2023  润新知