小工具      在线工具  汉语词典  css  js  c++  java

mybatis连接mysql的详细步骤

# MyBatis,mysql,数据库,mybatis,jar,jdbc 额外说明

收录于:152天前

mybatis连接数据库

配置Maven的pom文件,导入依赖的工具包

配置pom文件可以省去下载和导入各种依赖包(jar)。具体可以阅读之前的Maven相关文章。

<dependencies>
    <!--junit单元测试坐标-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>

    <!--mysql连接数据库的依赖坐标坐标-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.11</version>
    </dependency>

    <!--导入mybatis坐标-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.5</version>
    </dependency>

    <!--导入druid连接池-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.24</version>
    </dependency>

    <!--导入dbutils坐标-->
    <dependency>
      <groupId>commons-dbutils</groupId>
      <artifactId>commons-dbutils</artifactId>
      <version>1.6</version>
    </dependency>


  </dependencies>

junit单元测试,可以方便我们测试每个sql语句的函数。
mysql-connect-xxx时jdbc的连接驱动的jar包,是连接数据库的必要条件
mybatis坐标是数据库操作框架,简化jdbc的操作,当然如果你习惯jdbc操作的化可以导入jdbc的坐标
druid连接池,连接池是一个容器,优化线程的工具,不必为每个操作创建单个的数据库连接。
dbutil也是jdbc的简化工具包,使查询和更新变得更简单,并能处理查询的结果集。

定义mybatis框架的配置文件mybatis-config.xml

该文件在maven项目目录结构的resoueces目录下,主要实现数据库连接和配置sql语句简化数据库操作的。
在这里插入图片描述

IDEA实现Maven项目创建并连接Tomcat

<?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="${driver}"/>
        <property name="url" value="${url}"/>
        <property name="username" value="${username}"/>
        <property name="password" value="${password}"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
 	<!--mappper映射路径-->
    <mapper resource="UserMapper.xml"/>
  </mappers>
</configuration>

需要修改的有两个部分:
连接配置(配置mysql连接的信息和jdbc差不多)${driver}修改为jdbc配置使的Driver对象的内容。
${url}也是jdbc连接数据时的配置,下面两个username和password是数据库的登录名(root)和密码。其实这些和jdbc一样。
映射器映射路径(将sql语句封装为一个带参方法的配置文件的路径)标签中的resource的内容要修改,改为对象映射文件(如UserMapper)的路径。有几个文件就要重写几个路径。

注意带$的要修改,和jdbc的一样mysql的8.0以上的driver=“com.mysql.cj.jdbc.Driver”;url=“jdbc:mysql://localhost:3306/db1?useSSL=false&serverTimezone=UTC”。db1是数据库的名称,相当于”use db1”的sql语句后面要有问号分割,数据库密码要正确。
mappers下的mapper的resource路径要修改成对象映射的xml路径。即下面的UserMapper.xml路径

配置对象映射文件UserMapper.xml

该文件的作用是将数据表映射成Javabean对象。

<?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="test">
  <select id="selectAll" resultType="model.User">
    select * from Blog where id = #{id}
  </select>
 
</mapper>

该文件就是将sql语句封装为一个带参方法,操作数据库是直接调用。映射器标签就是sql语句id就是被封装的方法。
需要修改的有三个地方:命名空间、id、结果类型、sql语句名称空间属性,如果你熟悉mybatis你就知道使用映射器代理开发时这里需要修改为映射对象的路径(否则随便命名test即可,也可以直接使用默认的)。ID是sql封装后的方法名自己定义。结果类型定义查询结果的返回的数据类型MyBatis查询结果resultType返回值类型详细介绍感谢作者留兰香丶。有string,list,javabean,map等类型。我们直接返回javabean即可(返回javabean时要填写javabean的路径)即model.User。
SQL语句中的#{}是占位符,和jdbc的?一样传递参数的。Blog改为对应的数据库表名,这个sql语句要能在mysql命令框运行的(带参数的话)

看一下我的javabean路径:
在这里插入图片描述

命名空间可以任意命名,select的id必须唯一,resulttype是javabean对应的User类,即model.User。该文件的名称是 UserMapper.xml。

编写数据库连接代码

package mybatis;
import model.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 org.junit.Test;

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

public class MybatisTest {

    @Test
    public void method() throws IOException {     //单元测试不能要static
        //mybatis框架都在xml配置文件中加载配置文件
        //从 XML 文件中构建 SqlSessionFactory 的实例
        String resource = "mybatis-config.xml";
        InputStream inputStream = null;

        inputStream = Resources.getResourceAsStream(resource);

        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //从 SqlSessionFactory 中获取 SqlSession
        SqlSession session = sqlSessionFactory.openSession();


        //执行sql
        List<User> users=session.selectList("test.selectAll",2);

        System.out.println(users);

        //释放资源
        session.close();

    }
}

测试代码中只有执行sql的步骤需要修改,在前面的配置文件中test时namespace随便名命名的,selectAll是id(封装的方法)selectList是sqlsession的处理查询结果集的方法,将查询对象存储到list集合中。并用List的泛型类接收。

我先演示一个不带参数的查询:将sql语句改为:从用户中选择 *,删除执行sql中的1(查询所有)

如图所示运行结果:
在这里插入图片描述
对应数据中的user表:
在这里插入图片描述

原样运行的话是有参数的,在方法后面直接添加一个参数就可以了,如图上的提示paramter为参数。填
入一个数字2.
在这里插入图片描述
如图运行结果:
在这里插入图片描述
由上上个图可以看出,第三个参数变为了rowBounds,有兴趣的可以了解一下,但是我们知道的是,肯定不是传递第二个参数的对象。那么封装sql语句是有多个参数该怎么办呢?就需要使用Mybatis Mapper代理开发了。用于解决传递多个参数的问题。

mybatis mapper代理开发详解

. . .

相关推荐

额外说明

JavaScript 发送 HTTP 请求

要在 JavaScript 中发出 HTTP 请求,您可以使用 XMLHttpRequest 对象或 fetch() 函数。 下面是使用 XMLHttpRequest 发出 GET 请求的示例: const xhr = new XMLHttpReques

额外说明

Leetcode-简易题解1-回文数

目录 解法1 解法2 解法1 自己的想法,直接转成字符串首尾俩下标同时遍历比较 class Solution { public boolean isPalindrome(int x) { if(x<0){

额外说明

【数据结构算法】链表面试必答题1——反向链表

“别让无趣的世俗掩盖了你的浪漫和热情” 题目来自:牛客网和力扣 反转链表是一道很基础但又非常热门的算法面试题,牛客网和力扣上都有反转链表的题, 题目链接:点击即可跳转 牛客网反转链表题的链接 力扣反转链表题的链接 文章目录 题目描述 要求 输出样例 解决

额外说明

PyQt5开发环境搭建 1.2 简单的例子

目录 基本开发步骤 创建Eric6工程目录 使用Qt Creator创建Qt项目 创建项目 Kit Selection

额外说明

获取安卓设备列表

 在一个cmd窗口中输入: adb nodaemon server 在另一个cmd窗口中输入: adb devices -l  

额外说明

存储器管理

分为主存储器和副主存储器两级 为用户提供方便,安全和充分大的存储空间 任务: 地址转换: 逻辑地址(相对地址) 物理地址(绝对地址) 内存的分配和回收 内存的地址保护 内存的共享 内存的扩充 程序的连接和装入 连续存储管理方式: 单

额外说明

常用笔记记录

一、vue v-if 一闪解决 <div class="#app" v-cloak> <p>{ {value.name}}</p> </div> [v-cloak] { display: none; } 二、vue条件动态sty

额外说明

LinQ的级联操作

LinQ的级联操作            现在我开始做一个linq的级联操作,给大家参考: 1.我首先新建了两张表一个是category,一个是product.   category表   product表:   2.然后添加关联:  ALTER   T

额外说明

【网络攻击】XSS和CSRF

XSS:跨站脚本攻击 用户访问被嵌入脚本的web页面,触发脚本的执行,导致用户的cookie信息被黑客获取,以用户的身份执行执行操作 这个被嵌入脚本web页面,可能是黑客的钓鱼网站,也有可能是别黑客发现漏洞植入脚本的正常服务器 防止: 过滤任何用户的提交

额外说明

【数据库】无效数据:软件测试对无效数据的处理

目录 一、无效数据的常见场景 (1)测试阶段  (2)测试方法 二、无效数据的概念  三、无效数据的影响 四、无效数据的识别 五、无效数据的处理方法 (1)拒绝无效数据 ① 拒绝无效数据的概念  ② 拒绝无效数据的方法 (2)过滤无效数据 ① 过滤无效数

ads via 小工具