使用MyBatis查询数据库--->超级详细

思路:搭建环境-->导入MyBatis-->编写代码-->测试

1、搭建环境

创建数据库

CREATE DATABASE mybatis;

use mybatis;表示使用这个数据库

USE mybatis;

创建user表,并添加字段,为什么加``后面会给解释

CREATE TABLE `user` (
  `id` int(20) NOT NULL,
  `name` varchar(30) DEFAULT NULL,
  `pwd` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

数据库中mybatis和`mybatis`的区别

在关系型数据库中,数据表的名称、列名以及其他对象的名称都可以使用不同种类的引号进行封装,包括单引号、双引号和反引号。

MyBatis在SQL语句解析时,对于数据库对象的名称,默认情况下会使用反引号进行封装。这是因为反引号在MySQL中被用作标识符的保留字符,当我们需要使用一些特殊的名称时(例如包含空格或其他特殊字符),就需要使用反引号进行处理,从而避免出现错误。

因此,在使用MyBatis访问MySQL数据库时,mybatis和`mybatis`这两个名称是有区别的,前者表示一个普通字符串,而后者则表示一个经过反引号封装的数据库对象名。在实际应用开发中,如果MyBatis命名规范与数据库设计规范保持一致,也可以不使用反引号来封装数据库对象名称,以提高代码可读性。但如果存在不合法的数据库对象名,则必须使用反引号进行封装,确保SQL能够正确执行。

在表中插入值

INSERT INTO `user`(id,`name`,pwd)  VALUES
(1,'张三','123456'),
(2,'李四','121212'),
(3,'王五','1314520')

2、新建Maven项目,导入maven依赖

在mybatis官网可以看到下面这段话

这里我创建的是一个普通Maven项目,从Maven官网仓库导入了复制pom依赖,并粘贴在idea中的

dependencies中,这里可以放多个依赖包

maven官网 ,网址:https://mvnrepository.com/

 那么在哪去找依赖呢,那我下来就来带大家找

点击一个最新并且使用的人多的版本

点击后,进入到如下页面 

往下翻,可以看到pom依赖

 放入到idea中

我这里是建了一个maven项目,删除src,然后再创建一个maven子项目,这样的好处是,下次建子项目,不用再去导包

这是我的包目录

3、编写代码

mybatis依赖

 <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.13</version>
    </dependency>

数据库依赖

 <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.46</version>
    </dependency>

Junit依赖,导入包后,可以使用注解测试,无需mian,方法,这就是@Test的简便

 <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13</version>
        <scope>test</scope>
    </dependency>

maven的创建和配置,我有详细介绍,可以看我的上一篇

Maven可能存在资源过滤的问题,可以在pom.xml文件中完善以下配置来防止资源无法导出的问题,资源过滤问题的出现,是因为maven中约定大于配置,所以还要导入配置,避免出现下面的问题

 资源问题,需要导入的配置

<build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>

编写UserDao接口

package com.qcnel.dao;

import com.qcnel.pojo.User;
import java.util.List;
public interface UserDao {
    List<User> getUserlist();
}

编写mapper.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绑定一个Dao或Mapper接口-->
<mapper namespace="com.qcnel.dao.UserDao">
<!--  getUserlist接口中的方法-->
    <select id="getUserlist" resultType="com.qcnel.pojo.User">
        SELECT * FROM USER
    </select>

</mapper>

编写实体类

package com.qcnel.pojo;

public class User {
    private int id;
    private String name;
    private String pwd;
    public User() {
    }

    public User(int id, String name, String pwd) {
        this.id = id;
        this.name = name;
        this.pwd = pwd;
    }

    public int getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

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

编写公共类

package com.qcnel.utils;

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;

public class MyBatisUtils {

    private static SqlSessionFactory sqlSessionFactory;
 static {
     try {
         // 使用mybatis第一步,获取SqlSessionFactory对象
         String resource = "mybatis-config.xml";
         InputStream inputStream = Resources.getResourceAsStream(resource);
          sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
     } catch (IOException e) {
         e.printStackTrace();
     }
 }


  // 有了SqlSessionFactory对象,就可以获得SqlSession的实例了
  //   SqlSession完全包含了面向数据库执行SQL命令所需的所有方法
  public static SqlSession getSqlSession(){
     return sqlSessionFactory.openSession();
  }

}

编写mybatis-config.xml文件,这里url的值后面的参数要注意的是,如果导入数据库的依赖包版本是5.0的,需要把useSSL设置为true;8.0的默认为true,当然还有driver的值需要加cj,还要设置时区

<?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>

    <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://localhost:3306/mybatis?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
<!--    每一个Mapper.xml都需要在mybatis核心配置中注册-->
    <mappers>
       <mapper resource="com/qcnel/dao/mapper.xml"/>
    </mappers>
</configuration>

编写测试类

import com.qcnel.dao.UserDao;
import com.qcnel.pojo.User;
import com.qcnel.utils.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class UserDaoTest {
    @Test
    public void Test(){
       // 获取 SqlSession对象
        SqlSession sqlSession =MyBatisUtils.getSqlSession();
        // 执行SQL
        UserDao userDao = sqlSession.getMapper(UserDao.class);
        List<User> userlist = userDao.getUserlist();
        for (User user : userlist) {
            System.out.println(user);
        }
       // 关闭sqlSession
        sqlSession.close();
    }
}

运行结果:

总结:mapper.xml绑定UserDao接口,就相当于UserDaoImpl的实现类,pojo类是和数据库的字段做映射,至于utils工具类可以参考官网,目的就是获取资源,相当于获取输入流,然后创建SqlSessionFactory对象,然后就可以创建SqlSession对象;mybatis-config.xml就是配置一些数据库的属性,然后绑定mapper.xml,因为需要连数据库嘛;最后一步就是测试,用sqlSession对象去操作数据库,然后遍历输出在控制台

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值