JAVA从入门到精通之Mybatis笔记3
沉沙 2019-07-24 来源 : 阅读 492 评论 0

摘要:本篇文章探讨了JAVA从入门到精通之Mybatis笔记3,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入。

本篇文章探讨了JAVA从入门到精通之Mybatis笔记3,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入。<

JAVA从入门到精通之Mybatis笔记3

Mybatis映射文件的SQL深入

(Mybatis今天学的不多,看了半天的mysql必知必会)

动态sql语句-if语句,查询一个用户的时候,有可能根据地址查询,用户名查询,性别查询等,所以需要动态sql语句

1.接口中新添加方法

user 查询的条件:有可能有用户名,有可能有性别,也有可能有地址,还有可能是都有
List<User> findUserByCondition(User user);

2.配置文件的写法,根据条件查询

    <!--根据条件查询-->
    <select id="findUserByCondition" resultType="userMap" parameterType="user">
        select * from user where 1=1
        <if test="userName != null">
           and username=#{userName}
        </if>
    </select>

3.测试方法

 public void testFindByCondition(){
        User u = new User();
        u.setUserName("老王");
        //5.执行查询所有方法
        List<User> users = userDao.findUserByCondition(u);
        for(User user : users){
            System.out.println(user);
        }
    }

mybatis中的多表查询

示例:用户和账户,一个用户可以有多个账户,一个账户只能属于一个用户

步骤:


  1. 建立两张表:用户表和账户表,让用户表和账户表之间具备一对多的关系:需要使用外键在账户表中添加


  2. 建立两个实体类:用户实体类和账户实体类,让用户和账户的实体类能体现出一对多的关系


  3. 建立两个配置文件,用户的配置文件和账户的配置文件


  4. 实现配置:当我们查询用户是,可以同时得到用户下所包含的账户信息,当我们查询账户是,可以同时得到账户的所属用户信息

账户表的创建

用户表的创建

接口的建立

用户接口

public interface IAccountDao {
    //查询所有账户
    List<Account> finaAll();
}

账户接口

public interface IUserDao {
    /**
     * 查询所有用户
     */
    List<User> findAll();
    /**
     * 根据id查询用户信息
     */
    User findById(Integer userId);
}

用户实体类的建立

用户实体类

package com.itheima.domain;
import java.io.Serializable;
import java.util.Date;
public class User implements Serializable {
    private Integer id;
    private String username;
    private String address;
    private String sex;
    private Date birthday;
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", address='" + address + '\'' +
                ", sex='" + sex + '\'' +
                ", birthday=" + birthday +
                '}';
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public Date getBirthday() {
        return birthday;
    }
    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }
}

账户实体类

package com.itheima.domain;
import java.io.Serializable;
public class Account implements Serializable {
    private Integer id;
    private Integer uid;
    private Double money;
    @Override
    public String toString() {
        return "Account{" +
                "id=" + id +
                ", uid=" + uid +
                ", money=" + money +
                '}';
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public Integer getUid() {
        return uid;
    }
    public void setUid(Integer uid) {
        this.uid = uid;
    }
    public Double getMoney() {
        return money;
    }
    public void setMoney(Double money) {
        this.money = money;
    }
}

初步的配置文件

用户的

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "//mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itheima.dao.IUserDao">
    <!-- 查询所有 -->
    <select id="findAll" resultType="user">
       select * from user
    </select>
    <!-- 根据id查询用户 -->
    <select id="findById" parameterType="INT" resultType="user">
        select * from user where id = #{uid}
    </select>
</mapper>

账户的

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "//mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.itheima.dao.IAccountDao">
    <!-- 查询所有 -->
    <select id="findAll" resultType="account">
       select * from account
    </select>
</mapper>

目的:查询所有账户,同时还有获取到当前账户的所属用户信息

添加一个实体类,继承Account

package com.itheima.domain;
//让他继承Account
public class AccountUser extends Account{
    //只需要用户名和地址
    private String username;
    private String address;
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
    @Override
    public String toString() {
        //让他先调用父类的toString
        return  super.toString()+"     AccountUser{" +
                "username='" + username + '\'' +
                ", address='" + address + '\'' +
                '}';
    }
}

接口添加方法

   //查询所有账户,并且带有用户名称和地址名称
    List<AccountUser> findAllAccount();

test类实现功能

 @Test
    //查询所有账户,同时包含用户名称和地址
    public void testFindAllAccountUser(){
        List<AccountUser> aus = accountDao.findAllAccount();
        for(AccountUser au :aus){
            System.out.println(au);
        }
    }

      本文由职坐标整理发布,学习更多的相关知识,请关注职坐标IT知识库!

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程