MyBatis的各种查询功能及特殊的SQL执行

文章介绍了如何使用MyBatis进行不同类型的查询操作,包括根据属性查询、单条或多条结果的处理,以及结果转化为实体类或Map集合。此外,还提到了模糊查询、批量删除、动态表名和获取自增主键等特殊SQL执行。
摘要由CSDN通过智能技术生成

准备

        准备一个User类

package mybatis.pojo;

public class User {
    Integer id;
    String name;
    Integer age;

    public User(){}

    public User(Integer id, String name, Integer age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}'+'\n';
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

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

数据库中准备一个user表

MyBatis的各种查询功能

        1.根据某个属性查询信息

        2. 查询结果只有一条的时候

                可以用一个实体类对象来接收,mapper.xml文件中select标签的resultType的值是实体类对象的类型,即resultType="User"。

                可以用list集合接收,此时集合中只有一个元素,mapper.xml文件中select标签的resultType的值是实体类对象的类型,即resultType="User"。

                可以用map集合接收,此时集合中也是只有一个元素,查询结果没有对应的实体类对象接收就可以用这个来接收,resultType="map"。

                若查询的结果是单行单列的数据,直接用对应的数据类型接收就可以了,

                例如:查询学生人数

<!--Integer getCount();-->
<select id="getCount" resultType="java.lang.Integer"><!--resultType还可以写Integer、integer、int、Int、_int、_integer-->
    select count(*) from `user`
</select>

       3.查询结果有多条的时候

                可以用实体类类型的list集合接收,resultType="map"。

mapper接口中定义方法:
//查询所有用户信息
List<User> getAllUsers();

mapper.xml文件中:
<!--List<User> getAllUsers();-->
<select id="getAllUsers" resultType="User">
    select * from `user`
</select>

输出结果:

 

                可以用map类型的list集合接收,resultType="map"。

mapper接口中定义方法:

//查询多条数据为map集合

List<Map<String, Object>> getAllUserToMap1();


mapper.xml文件中:

<!--Map<String, Object> getAllUserToMap1();-->

<select id="getAllUserToMap1" resultType="map">

         select * from `user`

</select>

输出结果:

 

                 可以在mapper接口的方法上添加@MapKey注解,以某个字段(唯一)的值作为键,以每条数据转换的map集合作为值,放在同一个map集合中。

mapper接口中定义方法:

//查询多条数据为map集合

@MapKey("id")//以某个字段(唯一)的值作为键,以每条数据转换的map集合作为值

Map<String, Object> getAllUserToMap2();


mapper.xml文件中:

<!--Map<String, Object> getAllUserToMap2();-->

<select id="getAllUserToMap2" resultType="map">

         select * from `user`

</select>

输出结果:

特殊的SQL执行

        1.模糊查询

                有三种方式

        2.批量删除

        3.动态设置表名

 

        4.获取自增的主键

结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值