Mybatis基础以及创建一个Mybatis工程

1> 三层架构

  • 界面层: 和用户打交道的, 接收用户的请求参数, 显示处理结果的。(jsp ,html ,servlet)
  • 业务逻辑层: 接收了界面层传递的数据,计算逻辑,调用数据库,获取数据
  • 数据访问层: 就是访问数据库, 执行对数据的查询,修改,删除等等的。

1.1、三层架构对应的包

  • 界面层: controller包 (servlet)
  • 业务逻辑层: service 包(XXXService类)
  • 数据访问层: dao包(XXXDao类)

1.2、三层中类的交互

  • 用户使用界面层–> 业务逻辑层—>数据访问层(持久层)–>数据库(mysql)

1.3、三层对应的处理框架

  • 界面层—servlet—springmvc(框架)
  • 业务逻辑层—service类–spring(框架)
  • 数据访问层—dao类–mybatis(框架)

2>框架

  • 框架是一个舞台, 一个模版
  • 模版:
    • 规定了好一些条款,内容。
    • 加入自己的东西
  • 框架是一个模块
    • 框架中定义好了一些功能。这些功能是可用的。
    • 可以加入项目中自己的功能, 这些功能可以利用框架中写好的功能。
  • 框架是一个软件,半成品的软件,定义好了一些基础功能, 需要加入你的功能就是完整的。基础功能是可重复使用的,可升级的。
  • 框架特点:
    1. 框架一般不是全能的, 不能做所有事情
    2. 框架是针对某一个领域有效。 特长在某一个方面,比如mybatis做数据库操作强,但是他不能做其它的。
    3. 框架是一个软件

3> mybatis框架

  • 一个框架,早期叫做ibatis, 代码在github。
  • mybatis是 MyBatis SQL Mapper Framework for Java (sql映射框架)
    • 1)sql mapper :sql映射
      • 可以把数据库表中的一行数据映射为 一个java对象。 一行数据可以看做是一个java对象。操作这个对象,就相当于操作表中的数据
    • 2) Data Access Objects(DAOs) : 数据访问 ,对数据库执行增删改查。

4>mybatis功能

  • 1、提供了创建Connection ,Statement, ResultSet的能力 ,不用开发人员创建这些对象了
  • 2、提供了执行sql语句的能力, 不用你执行sql
  • 3、提供了循环sql, 把sql的结果转为java对象, List集合的能力
  while (rs.next()) {
	Student stu = new Student();
	stu.setId(rs.getInt("id"));
	stu.setName(rs.getString("name"));
	stu.setAge(rs.getInt("age"));
	//从数据库取出数据转为 Student 对象,封装到 List 集合
	stuList.add(stu);
  }
  • 4、提供了关闭资源的能力,不用你关闭Connection, Statement, ResultSet

5>总结

  • 开发人员做的是: 提供sql语句 最后是:
  • 开发人员提供sql语句–mybatis处理sql—开发人员得到List集合或java对象(表中的数据)
  • 总结:
    • mybatis是一个sql映射框架,提供的数据库的操作能力。增强的JDBC,
    • 使用mybatis让开发人员集中精神写sql就可以了,不必关心Connection,Statement,ResultSet的创建,销毁,sql的执行。

6>利用mybatis来查询数据库表中信息

6.1、具体实现

  • 1、利用navicat创建mysqls数据库和表
    在这里插入图片描述
  • 2、创建maven工程
    在这里插入图片描述
    在这里插入图片描述
  • 4、删除默认创建的App类文件
    在这里插入图片描述
  • 5、配置pom.xml,建立mysql驱动和mybatis依赖以及maven插件
    • 这里依赖的作用是导入对应的jar包
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.9</version>
</dependency>
</dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.9</version>
</dependency>
</dependencies>
  • 这里插件的作用是
  • 可以将xml文件可以在classes下生成
 <resources>
      <resource>
        <directory>src/main/java</directory><!--所在的目录-->
        <includes><!--包括目录下的.properties,.xml 文件都会扫描到-->
          <include>**/*.properties</include>
          <include>**/*.xml</include>
        </includes>
        <filtering>false</filtering>
      </resource>
    </resources>
  • 6、编写Student实体类
    • 创建包 com.bjpowernode.domain, 包中创建 Student 类 package
      com.bjpowernode.domain;
package com.bjpowernode.domain;

public class Student {
    private Integer id;
    private String name;
    private String email;
    private Integer age;

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

    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 String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}
  • 7、编写编写 Dao 接口 StudentDao
    • 创建 com.bjpowernode.dao包,创建 StudentDao 接口
package com.bjpowernode.dao;

import com.bjpowernode.domain.Student;

import java.util.List;

public interface StudentDao {
    List<Student> selectStudents();
    //查询所有学生
}

  • 8、编写 Dao 接口 Mapper 映射文件 StudentDao.xml
  • 要求:
    • 1、在 dao 包中创建文件 StudentDao.xml
    • 2、要StudentDao.xml 文件名称和接口 StudentDao 一样,区分大小写的一样
<?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">
<mapper namespace="">
    <select id="selectStudents" resultType="com.bjpowernode.domain.Student">
        <!--
        <select>: 查询数据, 标签中必须是 select 语句
        id: sql 语句的自定义名称,推荐使用 dao 接口中方法名称,
        使用名称表示要执行的 sql 语句
        resultType: 查询语句的返回结果数据类型,使用全限定类名
        -->
  </select>
</mapper>
  • 9、创建 MyBatis 主配置文件
    • 项目 src/main 下创建 resources 目录,设置 resources 目录为 resources root
    • 创建主配置文件:名称为 mybatis.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>
    <settings>
        <setting name="logImpl" value="STDOUT_LOGGING" />
    </settings>
    <!-- 配置 mybatis 环境 -->
    <environments default="mydev">
        <!--id: 数据源的名称 -->
        <environment id="mydev">
            <!-- 配置事务类型:使用 JDBC 事务(使用 Connection 的提交和回滚) -->
            <transactionManager type="JDBC"/>
            <!-- 数据源 dataSource :创建数据库 Connection 对象
            type: POOLED 使用数据库的连接池
            -->
            <dataSource type="POOLED">
                <!-- 连接数据库的四个要素 -->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/springdb"/>
                <property name="username" value="root"/>
                <property name="password" value="111"/>
            </dataSource>
        </environment>
        <!--配置线上数据库这里仅为演示-->
        <environment id="online">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/onlinedb"/>
                <property name="username" value="root"/>
                <property name="password" value="333"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!-- 告诉 mybatis 要执行的 sql 语句的位置 -->
        <mapper resource="com/bjpowernode/dao/StudentDao.xml"/>
    </mappers>
</configuration>
  • 10、创建测试类 MyBatisTest
    • com/bjpowernode/MybtisTest.java
package com.bjpowernode;

import com.bjpowernode.domain.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 java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class MybtisTest {
    public static void main(String[] args) throws IOException {
        //1.mybatis 主配置文件
        String config = "mybatis.xml";
        //2. 读取配置文件
        InputStream in = Resources.getResourceAsStream(config);
        //3. 创建 SqlSessionFactory 对象, , 目的是获取 Sql Session
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
        //4. 获取 SqlSession,SqlSession 能执行 sql 语句
        SqlSession session = factory.openSession();
        //5. 执行 SqlSession 的 selectList()《重要》
        List<Student> studentList =
                session.selectList("com.bjpowernode.dao.StudentDao.selectStudents");
        //6. 循环输出查询结果《重要》
        studentList.forEach( student -> System.out.println(student));
        //7. 关闭 SqlSession ,释放资源
        session.close();
    }
}

6.2、缺少mybatis.xml解决方案

  • 将mybatis.xml文件复制粘贴到traget/classes下

6.3、配置日志

  • mybatis.xml 文件加入日志配置,可以在控制台输出执行的 sql 语句和参数
  • <configuration>下面第一个加
<settings>
<setting name="logImpl" value="STDOUT_LOGGING" />
</settings>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值