0
点赞
收藏
分享

微信扫一扫

【maven&mybatis】入门程序--查询数据

古月无语 2022-04-13 阅读 48
mavenjava

使用mybatis的代理方式完成查询所有操作(保姆级别,略过maven项目的创建过程,自留)

需求描述

现有如下表结构,请使用mybatis的代理方式完成数据的查询操作,并满足以下要求:

student表结构

要求

  1. 新创建一个名为 student-demo 的 Maven 模块,在 pom.xml 中导入对应依赖的坐标
  2. 定义一个 Student 实体类,放置在 com.itheima.pojo 包下
  3. 定义一个 StudentMapper 类,放置在 com.itheima.mapper 包下
  4. 将查询到的每一条数据封装成 Student 对象,多个存储到 List集合中

素材

student 表的创建语句如下:

create table student (
id int primary key auto_increment,
name varchar(32),
age int,
address varchar(100),
gender char,
phone varchar(11),
birthday date
);
insert into student values (1,"张三丰",25,"北京海淀区","男","13612345678","2022-01-01");
insert into student values (2,"郭襄",20,"北京昌平区","女","13656445678","2017-01-01");

提示

  1. 使用 mybatis 代理方式满足特定的要求
  2. 在 resources 下创建和 StudentMapper 同目录结构时,需要书写成 com\itheima\mapper

编码实现

一、连接数据库,建表

1.打开idea,先将idea和MySQL进行连接
在这里插入图片描述
2.我的账户User和密码PassWord都是root,将URL中的“localhost”改为“127.0.0.1”(这一步属实脱裤子放屁哈哈哈),修改结果如下图,如有需要,可在Comment中填写“本地数据库“,再点击Test Connection,测试连接通过,点击”OK"即可在这里插入图片描述
3.进入查询控制台
在这里插入图片描述
可以选择新建,也可以选择默认,这里我选择了新建一个查询控制台console_1
在这里插入图片描述
4.接下来直接复制建表语句,全选直接运行就可以了,代码爆红不是报错,是idea的锅
在这里插入图片描述
下面是sql语句代码

#创建数据库demo
create database demo;

#使用demo数据库
use demo;

#将学生表student创建在数据库demo下
create table student
(
    id       int primary key auto_increment,
    name     varchar(32),
    age      int,
    address  varchar(100),
    gender   char,
    phone    varchar(11),
    birthday date
);

#插入数据
insert into student
values (1, "张三丰", 25, "北京海淀区", "男", "13612345678", "2022-01-01");
insert into student
values (2, "郭襄", 20, "北京昌平区", "女", "13656445678", "2017-01-01");

#复制代码后,可以选择Ctrl+Alt+L,格式化代码

🆗,数据库已准备完成

二、概念了解

1.Maven 是专门用于管理和构建Java项目的工具,Maven使用标准的 坐标 配置来管理各种依赖,只需要简单的配置就可以完成依赖管理。
2.Apache Maven 是一个项目管理和构建工具,它基于项目对象模型(POM)的概念,通过一小段描述信息来管理项目的构建、报告和文档。
3.MyBatis 是一款优秀的
持久层框架
,用于简化 JDBC 开发。其中,JDBC的缺点存在于:

  • 硬编码
    • 注册驱动、获取连接
    • SQL语句
  • 操作繁琐
    • 手动设置参数
    • 手动封装结果集

通过Mybatis 优化之后:

  • 硬编码可以配置到配置文件
  • 操作繁琐的地方mybatis都自动完成

了解完概念后,可以上手操作了🤭

三、导入依赖包

创建maven项目后,要在创建好的模块中的 pom.xml 配置文件中添加依赖的坐标,这里我还另外添加了单元测试和日志依赖
在这里插入图片描述
注意:需要在项目的 resources 目录下创建logback的配置文件logback.xml
在这里插入图片描述
logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <!--
        CONSOLE :表示当前的日志信息是可以输出到控制台的。
    -->
    <appender name="Console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>[%level] %blue(%d{HH:mm:ss.SSS}) %cyan([%thread]) %boldGreen(%logger{15}) - %msg %n</pattern>
        </encoder>
    </appender>

    <logger name="com.itheima" level="DEBUG" additivity="false">
        <appender-ref ref="Console"/>
    </logger>

    <!--
      level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF
     , 默认debug
      <root>可以包含零个或多个<appender-ref>元素,标识这个输出位置将会被本日志级别控制。
      -->
    <root level="DEBUG">
        <appender-ref ref="Console"/>
    </root>
</configuration>

四、编写mybatis配置文件

在模块下的 resources 目录下创建mybatis的配置文件 mybatis-config.xml ,只需替换连接信息,解决硬编码问题
在这里插入图片描述
mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <typeAliases>
        <package name="com.yyh.pojo"/>
    </typeAliases>

    <!--
    environments:配置数据库连接环境信息。可以配置多个environment,通过default属性切换不同的environment
    -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <!--数据库连接信息-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///day04?useSSL=false"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>

    </environments>

    <mappers>
        <!--加载sql映射文件-->
<!--         <mapper resource="com/itheima/mapper/StudentMapper.xml"/>-->

        <!--Mapper代理方式-->
        <package name="com.yyh.mapper"/>

    </mappers>


</configuration>

五、定义Student 实体类

建立pojo类封装查询到的学生数据
先在src/main/java文件夹下新建包com.yyh.pojo
再在pojo目录下创建Student.java,定义的属性和数据库的学生表字段对应
最后创建无参和有参构造方法、Getter和Setter方法以及toString方法
在这里插入图片描述

六、 定义StudentMapper 接口

在java文件夹下新建包com.yyh.mapper,在包里面定义接口StudentMapper,在接口里面定义getAllStudent()方法,将查询到的学生Student对象封装到List集合中
在这里插入图片描述
StudentMapper.java

package com.yyh.mapper;

import com.yyh.pojo.Student;
import java.util.List;

public interface StudentMapper {
    List<Student> getAllStudent();
}

七、创建 StudentMapper.xml 的映射配置文件

在 resources 下创建 com\itheima\mapper 目录结构,这里要注意,Mapper接口名称和SQL映射文件名称相同,并在同一目录下,我们才可以使用包扫描的方式简化SQL映射文件的加载
SQL映射文件中sql语句的id就是mapper接口里定义的方法名,并保持参数类型和返回值类型一致
这里只有查询需求,所以使用select标签,在标签里写上sql查询语句
在这里插入图片描述
StudentMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!--
    namespace:名称空间.必须是对应接口的全限定名
-->

<mapper namespace="com.yyh.mapper.StudentMapper">

    <select id="getAllStudent" resultType="Student">
        select * from student;
    </select>
</mapper>

八、编写测试类

在src.test.java目录中新建StudentTest测试类
在这里插入图片描述
StudentTest.java


import com.yyh.mapper.StudentMapper;
import com.yyh.pojo.Student;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class StudentTest {
    @Test
    public void getAllStudent() throws IOException {
        //1. 加载mybatis的核心配置文件,获取 SqlSessionFactory
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //2. 获取SqlSession对象,用它来执行sql
        SqlSession sqlSession = sqlSessionFactory.openSession();

        //3. 执行sql
        //3.1 获取UserMapper接口的代理对象
        StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);

        //调用mapper方法去数据库获取信息
        List<Student> allStudent = mapper.getAllStudent();
        for (Student student : allStudent) {
            System.out.println(student);
        }

        //4. 释放资源
        sqlSession.close();

    }
}

九、运行测试类

运行测试类,查询到两条学生数据
在这里插入图片描述
既然你都看到这里了,不如点个赞再走吧!!

举报

相关推荐

0 条评论