springboot+mybatis实现查询数据库中所有用户信息

目录

一、创建springboot工程并引入mybatis相关依赖

1.这里是这个项目,如有需要可点击此链接:idea创建springboot工程,并引入mybatis依赖

2.让项目更简洁

3.最终目录

二、准备一个数据库和要查询的表

1.数据库和user表

2.sql语句

三、创建实体类

1.创建包pojo,和实体类User

2.声明属性

3.get、set方法、构造器、tostring方法(快捷键生成)

4.代码:User.java

四、配置mybatis(数据库连接信息)

1.找到工程自带的文件(application.properties)

2.配置数据库连接信息

3.代码:application.properties

五、编写sql语句(注解、xml)

1.创建接口mapper

2.将sql语句写到注解中

六、测试

1.打开工程生成的测试文件

2.编写测试方法

3.运行测试方法

4.查看控制台


一、创建springboot工程并引入mybatis相关依赖

1.这里是这个项目,如有需要可点击此链接:idea创建springboot工程,并引入mybatis依赖

2.让项目更简洁

3.最终目录

二、准备一个数据库和要查询的表

这里使用的idea中自带的数据库图形化工具,如有需要可查看此链接:

idea中数据库图形化工具的使用

1.数据库和user表

2.sql语句

create table user(
                     id int unsigned primary key auto_increment comment 'ID',
                     name varchar(100) comment '姓名',
                     age tinyint unsigned comment '年龄',
                     gender tinyint unsigned comment '性别, 1:男, 2:女',
                     phone varchar(11) comment '手机号'
) comment '用户表';
 
insert into user(id, name, age, gender, phone) VALUES (null,'喜羊羊',5,'1','13000000000');
insert into user(id, name, age, gender, phone) VALUES (null,'美羊羊',4,'2','13000000001');
insert into user(id, name, age, gender, phone) VALUES (null,'懒羊羊',3,'1','13000000002');
insert into user(id, name, age, gender, phone) VALUES (null,'暖羊羊',6,'2','13000000003');
insert into user(id, name, age, gender, phone) VALUES (null,'沸羊羊',7,'1','13000000004');
insert into user(id, name, age, gender, phone) VALUES (null,'慢羊羊',13,'1','13000000005');

三、创建实体类

1.创建包pojo,和实体类User

2.声明属性

User实体类中的属性和数据库中的字段一 一对应

3.get、set方法、构造器、tostring方法(快捷键生成)

4.代码:User.java

package com.example.springbootmybatisdemo.pojo;

/**
 * User实体类
 */
public class User {
    private Integer id; //id
    private String name; //姓名
    private Short age;  //年龄
    private Short gender;   //性别
    private String phone;   //电话

    //有参构造
    public User(Integer id, String name, Short age, Short gender, String phone) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.gender = gender;
        this.phone = phone;
    }

    //无参构造
    public User() {
    }

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public Short getAge() {
        return age;
    }

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

    public Short getGender() {
        return gender;
    }

    public void setGender(Short gender) {
        this.gender = gender;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    //toString方法
    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", gender=" + gender +
                ", phone='" + phone + '\'' +
                '}';
    }
}

四、配置mybatis(数据库连接信息)

1.找到工程自带的文件(application.properties)

2.配置数据库连接信息

3.代码:application.properties

#配置数据库连接信息------四要素
#1.驱动类名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#2.数据库连接的url
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis
#3.连接数据库的用户名
spring.datasource.username=root
#4.连接数据库的密码
spring.datasource.password=123456

五、编写sql语句(注解、xml)

1.创建接口mapper

2.将sql语句写到注解中

代码:UserMapper.interface

package com.example.springbootmybatisdemo.mapper;

import com.example.springbootmybatisdemo.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;

import java.util.List;


//加上注解代表当前是mybatis当中的一个Mapper接口
//在运行时,会自动生成该接口的实现类对象(动态代理对象),并且框架会将该对象交给IOC容器管理
@Mapper
public interface UserMapper {

    /**
     *   需要在接口中定义方法:
     *   1.因为接口中的这个方法要给别人调用,所有用public修饰方法
     *   2.查询的用户有很多个,每条记录会封装为一个用户对象,因为有多条记录,所以封装到一个List集合中,所以返回值类型是List
     *   3.集合中的泛型就是封装的一个个User对象
     *   4.定义方法名:list
     *   5.在方法名上加上注解:因为是查询操作,所以是select注解
     *   6.Select注解的value属性中指定要查询的sql语句:"select * from User"
     */

    /**
     * 查询全部用户信息
     */
    @Select("select * from User")
    public List<User> list();

}

六、测试

1.打开工程生成的测试文件

2.编写测试方法

package com.example.springbootmybatisdemo;

import com.example.springbootmybatisdemo.mapper.UserMapper;
import com.example.springbootmybatisdemo.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

@SpringBootTest //springboot整合单元测试的注解
class SpringbootMybatisDemoApplicationTests {

    @Autowired  //依赖注入
    private UserMapper userMapper;

    /**
     * 查询全部用户信息
     */
    @Test
    public void selectAllList(){
        /**
         * 1.在selectAllList方法中调用UserMapper中的list()方法,查询全部用户信息
         * 2.因为UserMapper是一个接口,不能直接创建接口的对象,但是在UserMapper接口中加上了@Mapper注解,
         *   会生成代理对象,并交给ioc容器管理,因此它会成为容器中的一个bean对象,我们可以不创建对象而通过依赖注入的方式使用接口中的方法
         * 3.要使用容器中的bean对象,可以通过依赖注入的方式将bean对象注入
         * 4.怎么注入:需要在测试类中声明一个UserMapper类型的对象,再加上@Autowired注解完成依赖注入
         */

        //5.完成依赖注入后,就可以直接通过userMapper调用UserMapper接口中的list方法,来查询用户的所有信息
        //6.将返回值(List<User>)交给一个List集合保存
        List<User> userList = userMapper.list();

        //7.遍历输出userList集合中的每个User对象
        //拿到集合userList,通过stream流将集合变成流,调用forEach方法输出集合中的User对象
        userList.stream().forEach(user -> {
            System.out.println(user);
        });

    }

}

3.运行测试方法

4.查看控制台

其他:虽然能运行成功,但是我好像出了点问题,先保留

Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended

1. 使用反射机制 Java的反射机制可以在运行时获取类的信息,包括类的属性、方法等,因此可以使用反射机制遍历对象的属性。 ``` public void traverseObject(Object obj) throws IllegalAccessException { Class<?> clazz = obj.getClass(); Field[] fields = clazz.getDeclaredFields(); for (Field field : fields) { field.setAccessible(true); Object value = field.get(obj); System.out.println(field.getName() + ":" + value); } } ``` 2. 使用Java Bean的getter方法 Java Bean是一种符合特定规范的Java类,其包含了getter和setter方法,可以使用这些方法遍历对象的属性。 ``` public void traverseObject(Object obj) throws IntrospectionException, InvocationTargetException, IllegalAccessException { BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass()); PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors(); for (PropertyDescriptor propertyDescriptor : propertyDescriptors) { String propertyName = propertyDescriptor.getName(); if (!"class".equals(propertyName)) { Method getter = propertyDescriptor.getReadMethod(); Object value = getter.invoke(obj); System.out.println(propertyName + ":" + value); } } } ``` 3. 使用Jackson库的ObjectMapper类 Jackson是一个流行的Java库,可以将Java对象和JSON之间进行转换,其ObjectMapper类可以将Java对象转换为JSON字符串,因此也可以使用它遍历对象的属性。 ``` public void traverseObject(Object obj) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); String json = objectMapper.writeValueAsString(obj); System.out.println(json); } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值