一篇文章搞懂Mybatic的多表联查!

DBC 1.6K 0

Mybatic首先需要添加各种依赖,添加好之后就可以!

多的不谈,你最少得需要有一下包:

    <!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.4</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus</artifactId>
            <version>2.1.9</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-autoconfigure</artifactId>
            <version>1.3.2</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
接下来是构件xml的代码:
依葫芦画瓢,即可实现基本所有操作
column可以理解为sql查询出来的列名,property可以理解为你的实体类里面定义的名字,一句话来说就是,通过sql的列名映射到相应的实体类定义的名字上面
    <resultMap id="UserCollectConsult" type="com.example.demo.model.UserCollectConsult">
        <id property="id" column="id"></id>
        <result property="name" column="name"></result>
        <result property="phone" column="phone"></result>
        <result property="money" column="money"></result>
        <result property="lawyerState" column="lawyer_state"></result>
        <result property="img" column="img"></result>
        <collection property="userConsultList" ofType="com.example.demo.model.Consult">
            <id column="cousult_id" property="id"></id>
            <result column="title" property="title"></result>
            <result column="content" property="content"></result>
            <result column="state" property="state"></result>
            <result column="collect" property="collect"></result>
            <result column="release_time" property="releaseTime"></result>
            <result column="recovery_time" property="recoveryTime"></result>
            <result column="recovery_name" property="recoveryName"></result>
            <result column="recovery_content" property="recoveryContent"></result>
            <result column="phone" property="phone"></result>

        </collection>

    </resultMap>
这个位置就是sql的操作了,这里如果你数据库足够扎实,可以写出各种sql的语句,然后通过上面说的列名映射,可以完成基本所有的查询!这里举一个例子:
    <select id="queryUserConsult" resultMap="UserCollectConsult">
        select
        u.id,
        u.name,
        u.phone,
        u.money,
        u.lawyer_state,
        u.img,
        c.id cousult_id,
        c.title,
        c.content,
        c.state,
        c.collect,
        c.release_time,
        c.recovery_name,
        c.recovery_content,
        c.phone
        from user u left join  collect_consult cc on u.phone = cc.phone left join consult c on cc.cousult_id = c.id
    </select>

OK,结束了,就这两步,接下来基本就是Spring之间的调用了,我这里也可以直接举例全部流程,如下:

mapper类

这里名字要一样,不一样有什么后果可以自己尝试!

    List<UserCollectConsult> queryUserConsult();
这里其实就已经结束了,这种方式没有走那种通用的调用方式,不过不符合正规流程,不推荐,正常的流程一般是Service类调用此方法,随后写一些东西到ServiceImpl实现类里面,同理可得!下面举一个小例子!
    @RequestMapping("Test6")
    public HashMap  Test6() {
        List<UserCollectConsult> list = new ArrayList<>();
        list = userMapper.queryUserConsult();
        HashMap result = new HashMap<>();
        result.put("result", "success");
        result.put("code", "1");
        result.put("cUserCollectConsultode", list);

        return result;
    }

发表评论 取消回复
表情 图片 链接 代码

分享