javaweb mybatis(手动jar包)

基础:https://blog.csdn.net/qq_67832732/article/details/134764134

条件查询

在映射文件的SQL配置中配置参数

使用parameterType来指定参数类型

使用#{参数名}来接收参数的值 

javaweb mybatis(手动jar包)_第1张图片

parameterType="string" 表示sql语句需要一个参数,类型为字符串

username=#{xxx}表示用户名的值是来自一个变量xxx,这个变量值直接从java代码中传入,变量名可以任意命名,因为只有一个变量,会自动识别传过来的参数

javaweb mybatis(手动jar包)_第2张图片

 parameterType: 表示查询语句传入参数的类型。

支持基础数据类型复杂数据类型 如果SQL是单条件查询,则parameterType指定为基础数据类型

javaweb mybatis(手动jar包)_第3张图片

单条件查询

练习:在数据库的user表中,新增两个字段 性别( sex ),整型,1代表男性,0代表女性,非空 出生日期( birthDate ),date类型

javaweb mybatis(手动jar包)_第4张图片

使用MyBatis查询user表中所有的女性用户并输出 使用MyBatis查询user表中在1996年出生的用户并输出 

1、创建user实体类

javaweb mybatis(手动jar包)_第5张图片

package entity;

import java.util.Date;

public class User {

    private String username;
    private String password;
    private Integer age;
    private String sex;
    private String birthDate;

    public User() {
    }

    public User(String username, String password, Integer age, String sex, String birthDate) {
        this.username = username;
        this.password = password;
        this.age = age;
        this.sex = sex;
        this.birthDate = birthDate;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getBirthDate() {
        return birthDate;
    }

    public void setBirthDate(String birthDate) {
        this.birthDate = birthDate;
    }

    @Override
    public String toString() {
        return "User{" +
                "username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                ", birthDate=" + birthDate +
                '}';
    }
}

 2、创建数据库连接javaweb mybatis(手动jar包)_第6张图片

javaweb mybatis(手动jar包)_第7张图片 3、创建sql映射

javaweb mybatis(手动jar包)_第8张图片

4、创建测试方法

javaweb mybatis(手动jar包)_第9张图片 javaweb mybatis(手动jar包)_第10张图片

多条件查询 

在数据库中,查询用户信息表user中性别为“女性”,“1996”年出生的记录并输出

该例是一个多条件查询,需要向SQL配置中传入两个参数。 如果SQL是单条件查询,则parameterType指定为基础数据类型 如果是多条件查询,则parameterType指定为复杂数据类型。

多条件查询时,parameterType的参数类型可以为如下两种:

使用Java自定义实体类

javaweb mybatis(手动jar包)_第11张图片

javaweb mybatis(手动jar包)_第12张图片 parameterType指定为自定义实体类” UserCnd”

#{sex}表示性别条件的值取自实体类对象中sex属性的值

#{birthYear}表示出生年份条件的值取自实体类对象中birthYear属性的值

javaweb mybatis(手动jar包)_第13张图片

javaweb mybatis(手动jar包)_第14张图片

使用map或者hashmap 

javaweb mybatis(手动jar包)_第15张图片

javaweb mybatis(手动jar包)_第16张图片 总结javaweb mybatis(手动jar包)_第17张图片

resultType属性

查询结果映射是指MyBatis自动将SQL语句查询出来的结果映射到指定的对象中。

javaweb mybatis(手动jar包)_第18张图片 MyBatis通过resultType属性来实现查询结果的自动映射

resultType的值可以指定为两种类型:

基本数据类型(int、string、long等等) 复杂数据类型(Java实体类、map/hashmap)

javaweb mybatis(手动jar包)_第19张图片

自定义查询结果映射 

实体类”entity.User”中的属性名和SQL查询结果列名不一致,无法完成数据自动映射

解决方案1:定义别名 为SQL查询出的字段定义别名,

”强制”与”entity.User”中的属性名保持一致,以满足自动映射的要求

javaweb mybatis(手动jar包)_第20张图片

解决方案2:使用resultMap自定义映射关系

(1)在映射文件”UserMapper.xml”中,加入标签:

 javaweb mybatis(手动jar包)_第21张图片

(2)在映射文件”UserMapper.xml”中,将select配置的resultType属性修改为resultMap,并指定值为”userMap”

javaweb mybatis(手动jar包)_第22张图片javaweb mybatis(手动jar包)_第23张图片