三.Mybatis高级查询

来源:互联网 发布:软件项目关键技术指标 编辑:程序博客网 时间:2024/04/30 15:27

一关联查询:
表:
author: id realName userID IDCard
jikeUse: id userName password
visit: visitID userID visitDate visitIp

联合查询:查询所有作者带出其用户名

mapping:    <resultMap id="JiKeAuthorMap" type="Author">        <id property="id" column="author.id" />        <result property="realName" column="realName" />        <result property="IDCard" column="IDCard" />        <association property="jikeUser" column="userID"            javaType="JiKeUser">            <id property="id" column="jikeUser.id" />            <result property="userName" column="userName" />            <result property="password" column="password" />        </association>    </resultMap>    <select id="selectAuthorJoin" resultMap="JiKeAuthorMap">        select * from author inner join jikeUser on     jikeuser.id=author.userID    </select>

构造查询:

mapping:<resultMap id="JiKeAuthorMapByCon" type="Author">        <id property="id" column="author.id" />        <result property="realName" column="realName" />        <result property="IDCard" column="IDCard" />        <association property="jikeUser" column="userID"            javaType="JiKeUser">            <constructor>                    <arg column="userName" javaType="String" />                    <arg column="password" javaType="String" />            </constructor>        </association>    </resultMap><select id="selectAuthorJoin" resultMap="JiKeAuthorMapByCon">        select * from author inner join jikeUser             on jikeuser.id=author.userID    </select>测试:List<Author> ap=session.selectList("selectAuthorJoin");

构造查询有些参数无值

子查询:

mapping:<resultMap id="JiKeAuthorSubMap" type="Author">        <id property="id" column="author.id" />        <result property="realName" column="realName" />        <result property="IDCard" column="IDCard" />        <association property="jikeUser" column="userID"            javaType="JiKeUser" select="findById">        </association></resultMap><select id="selectAuthor" resultMap="JiKeAuthorSubMap">        select * from author </select>

懒加载可以在基本配置文件开启:

<settings>    <setting name="lazyLoadingEnabled" value="true"/>    <setting name="aggressiveLazyLoading" value="false"/></settings>

二.集合查询
表:
jikeUser:id userName password
visit: visitID userID visitDate vistIP

JikeUser类中添加private List visitList;一对多
mapping:

<resultMap id="visitMap" type="JiKeUser">        <id property="id" column="id" />        <result property="userName" column="userName" />        <collection property="visitList" javaType="ArrayList"            column="visitID" ofType="jike.book.pojo.Visit">            <result property="visitID" column="visitID" />            <result property="visitIP" column="visitIP" />            <result property="visitDate" column="visitDate" />        </collection></resultMap><select id="selectVisit" resultMap="visitMap">        select * from JiKeUser inner join visit on jikeuser.id=visit.userID</select>

测试:

List<JiKeUser> ap=session.selectList("selectVisit"); for(JiKeUser temp:ap) {                System.out.println("用户名="+temp.getUserName());                for(Visit oneVisit:temp.getVisitList())                {                    System.out.println("登录时间="+oneVisit.getVisitDate()+                            "登录IP="+oneVisit.getVisitIP());                }               }

三.鉴别器

简单鉴别:
Id Gender Husband wife
主键 性别 丈夫 妻子

为1给丈夫赋值,为2给妻子赋值

<discriminator javaType=“byte" column="gender">            <case value="1" >              <result property=”husband” column=“husband" />          </case>          <case value="2"    >                  <result property=”wife” column=“wife" />        </case>     </discrimindator>

复杂鉴别:
会员等级 等级对象
byte UserClass

为1实例化一个普通会员,为2实例化一个高级会员,为3实例化一个VIP

Class    GeneralClass extends UserClass     //普通会员,等级为1Class    SeniorClass extends UserClass    //高级会员,等级为2Class    VIPClass extends UserClass     //VIP会员,等级为3
0 0