Mybatis 框架篇章一

举报
兰舟千帆 发表于 2022/07/21 18:00:07 2022/07/21
【摘要】 Mybatis就是用来简化一些繁琐的操作的。说明:图片来自黑马ppt,和上诉部分说明来自黑马(真的很细致)。可能刚开始还没有深刻认识,因为使用的不是很频繁,也没有做过太大的项目。后面多用用就可以了。还有就是框架的配置可能看起来比较麻烦,但是这样的框架对于后续的维护是非常方便的。 使用Mybatis框架首先我们创建一个表create database mybatis;use mybatis;d...

Mybatis就是用来简化一些繁琐的操作的。

image.png

说明:图片来自黑马ppt,和上诉部分说明来自黑马(真的很细致)。

可能刚开始还没有深刻认识,因为使用的不是很频繁,也没有做过太大的项目。后面多用用就可以了。还有就是框架的配置可能看起来比较麻烦,但是这样的框架对于后续的维护是非常方便的。

使用Mybatis框架

首先我们创建一个表

create database mybatis;
use mybatis;

drop table if exists tb_user;

create table tb_user(
	id int primary key auto_increment,
	username varchar(20),
	password varchar(20),
	gender char(1),
	addr varchar(30)
);



INSERT INTO tb_user VALUES (1, 'zhangsan', '123', '男', '北京');
INSERT INTO tb_user VALUES (2, '李四', '234', '女', '天津');
INSERT INTO tb_user VALUES (3, '王五', '11', '男', '西安');


然后我们要使用Mybatis框架,我们就在Maven核心配置文件里面进行导入。因为我们我们需要用到数据库,肯定需要导入驱动。如果需要单元测试那么需要junit,如果需要日志的话,就需要logback。
这些可以详细了解,然后之后用到的时候就去用好了,比较简单。
在pom.xml文件里面需要包含以下。其他的默认。

<dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.6</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.19</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>
        <!-- 添加logback-core依赖 -->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-core</artifactId>
            <version>1.2.3</version>
        </dependency>
    </dependencies>

然后注意logback也需要在resource下面进行一下配置。
image.png
一定要注意结构层次。
内容

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

    <logger name="jgdabc" 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>

关于logback以及junit我们后面说明。

然后我们需要一个Mybatis的核心配置文件
image.png
关键信息

   <!--
    environments:配置数据库连接环境信息。可以配置多个environment,通过default属性切换不同的environment
    -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
            <!--注意数据库驱动格式,并不是统一的,还有就是数据库url规范,系统的时区和
            数据库的时区不一样也会报错,这些这里可以处理一下-->
                <!--数据库连接信息-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///mybatis?serverTimezone=GMT"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>

        <environment id="test">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <!--数据库连接信息-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///mybatis?serverTimezone=GMT"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="UserMapper.xml"/>
<!--        这个是映射-->
       
    </mappers>

关于映射文件,需要我们创建一个,然后在和Mybatis文件中指定路径。
image.png

<?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="test">
<!--resultType作为返回的类型,返回一个User-->
    <select id="selectAll" resultType="jgdabc.User">
        select *
        from tb_user;
    </select>
    <select id="selectById" resultType="jgdabc.User">
--         select *
--         from tb_user where id = #{id};

    </select>



</mapper>

可以看到映射文件主要是封装了相关的sql操作语句。返回一个类型。返回的类型我们可以去创建相应的类型类。
image.png

package jgdabc;

public class User {
    private Integer id;
    private String username;
    private String password;
    private String gender;

  public Integer getId() {
    return id;
  }

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

  public String getUsername() {
    return username;
  }

  @Override
  public String toString() {
    return "User{" +
            "id=" + id +
            ", username='" + username + '\'' +
            ", password='" + password + '\'' +
            ", gender='" + gender + '\'' +
            ", addr='" + addr + '\'' +
            '}';
  }

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

  public String getPassword() {
    return password;
  }

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

  public String getGender() {
    return gender;
  }

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

  public String getAddr() {
    return addr;
  }

  public void setAddr(String addr) {
    this.addr = addr;
  }

  private String addr;
}

这个User在测试类可以作为泛型
现在我们来看测试类

package jgdabc_;

import jgdabc.User;
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 MybatisDemo {
    public static void main(String[] args) throws IOException {
//        加载mybatis的核心配置文件

        //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
        List<User> users = sqlSession.selectList("test.selectAll");
        System.out.println(users);
        //4. 释放资源
        sqlSession.close();

    }
}

这些框架性的东西并不需要死记硬背,多用用就记住了。

我们运行一下。
image.png
image.png

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。