首页 > 其他分享 >Mybatis 教程

Mybatis 教程

时间:2024-02-08 21:22:17浏览次数:28  
标签:xml 教程 name mybatis SqlSession Mybatis id

Mybatis 教程

第一个 Mybatis 程序

思路:搭建环境 \(\to\) 导入 Mybatis \(\to\) 编写代码 \(\to\) 测试

image-20230111170714910

搭建环境

  1. 搭建数据库
CREATE DATABASE `mybatis`;
USE `mybatis`;

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;
INSERT  INTO `user`(`id`,`name`,`pwd`) VALUES (1,'狂神','123456'),(2,'张三','abcdef'),(3,'李四','987654');
  1. 新建项目
    1. 新建一个普通的 maven 项目
    2. 删除 src 目录

导入 Mybatis

<dependencies>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.11</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.30</version>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13.2</version>
        <scope>test</scope>
    </dependency>
</dependencies>

创建模块

  1. 编写 mybatis 核心配置文件:在 resources 文件夹内创建 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>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url"
                          value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=utf8"/>
                <property name="username" value="root"/>
                <property name="password" value="130914"/>
            </dataSource>
        </environment>
    </environments>
    <!--每一个 Mapper.xml 都需要在 Mybatis 核心配置文件中注册!-->
    <mappers>
        <!--注意名字千万不要写错啦-->
        <mapper resource="com/locke/dao/UserMapper.xml"/>
    </mappers>
</configuration>
  1. 编写 mybatis 的工具类:在 com.locke.utils 中新建 MybatisUtils 类(连接数据库

每个基于 Mybatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先定制的 Configuration 的实例构建出 SqlSessionFactory 的实例。

拿到 SqlSessionFactory 后,我们就可以从中获得 SqlSession 的实例了。SqlSession 完全包含了面向数据库执行 SQL 命令所需的所有方法。

public class MybatisUtils {
    private static SqlSessionFactory sqlSessionFactory;
    static {
        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    // 获取 SqlSession 连接
    public static SqlSession getSession(){
        return sqlSessionFactory.openSession();
    }
}

编写代码

  1. 实体类:在 com.locke.pojo 中新建 User
public class User {
    private int id;  // id
    private String name;   // 姓名
    private String pwd;    // 密码
    //构造,有参,无参
    //set/get
    //toString()
}
  1. Dao 接口:在 com.locke.Dao 中新建 UserMapper 接口
public interface UserMapper {
    List<User> selectUser();
}
  1. 接口实现类:在 com.locke.Dao 中新建 UserMapper.xml 配置文件(原来是 UserDaoImpl
<?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.locke.dao.UserMapper">
    <!--id 就是接口中方法的名字,本来是需要重写的(例如先连接数据库再执行查询),
    现在只需要绑定,不需要再连接数据库,只用专注于 sql 代码-->
    <!--resultType 代表返回类型-->
    <select id="selectUser" resultType="com.locke.pojo.User">
        select * from user
    </select>
</mapper>

测试

public class UserDaoTest {
    @Test
    public void selectUser() {
        // 第一步:获取 SqlSession 对象
        SqlSession session = MybatisUtils.getSession();
        // 第二步:执行 SQL
        // 方法一:
        // List<User> users = session.selectList("com.locke.mapper.UserMapper.selectUser");
        // 方法二:
        UserMapper mapper = session.getMapper(UserMapper.class);
        List<User> users = mapper.selectUser();
        for (User user: users){
            System.out.println(user);
        }
        // 第三步:关闭 sqlSession
        session.close();
    }
}

注意点:可能出现问题说明:Maven 静态资源过滤问题

pom.xml 中添加:以免找不到我们的 xml 文件

<!--在 build 中配置 resources,来防止我们资源导出失败的问题-->
<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
                <include>**/*.properties</include>
            </includes>
        </resource>

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

最终输出:

User{id=1, name='狂神', pwd='123456'}
User{id=2, name='张三', pwd='abcdef'}
User{id=3, name='李四', pwd='987654'}

参考资料

  1. B站视频地址
  2. 狂神课堂笔记

标签:xml,教程,name,mybatis,SqlSession,Mybatis,id
From: https://www.cnblogs.com/lockegogo/p/18012142

相关文章

  • 无涯教程-Flask - 环境设置
    安装Flask通常需要Python2.6或更高版本,尽管Flask及其依赖项在Python3(Python3.3及更高版本)上可以很好地工作,但是许多Flask扩展都无法正确地支持它,因此,建议在Python2.7上安装Flask。使用virtualenv安装virtualenv是一个虚拟的Python环境构建器。它可以帮助用户并行创建多......
  • switch 安装 moonlight 教程
    ​准备工作:破解的switch能进行串流,支持moonlight的电脑(nvdiashiled功能/sunshine软件)比较好的网络环境:5Ghz频段wifi的稳定链接去下载moonlight的nro包GitHub-rock88/moonlight-nx使用破解switch的DBI工具-MTP连接连到电脑上(switch比较挑数据......
  • 【实用技巧】【Mybatis】自定义的动态 SQL
    1 前言平时我们可能会拼接SQL,尤其是做一些报表的开发或者连表查询的时候,当条件发生变更或者关联关系需要改变的时候,就需要更改代码里的SQL,所以我这里弄了一个简易版的基于Mybatis的动态SQL调用。2 实现主要是Mybatis的动态SQL://controller层@Override@PostMapp......
  • 数据库迁移工具--DBMotion使用教程
    DBMotion安装与使用1.访问地址DBMotion,数据库迁移|Squids.cn2.下载docker-compose.yaml点击下载docker-compose.yaml配置文件https://squids.cn/download/dbmotion/docker-compose.yamlversion:'3.0'services:dts-mysql:image:mysql:latestcontaine......
  • mybatis 通过拦截器打印完整的sql语句以及执行结果操作
    下面的文件放在source-fw的【jp.co.token.sikyuu.iterceptor】包下面MybatisInterceptor.javaInterceptorForQry.java下面的文件放在source-fw的【jp.co.token.sikyuu.common】包下面FastJsonUtils.java下面的文件放在WebRoot/WEB-INF/lib/路径下面fastjson-......
  • Eclipse安装配置、卸载教程(Windows版)
    Eclipse是一个开放源代码的集成开发环境(IDE),最初由IBM公司开发,现在由Eclipse基金会负责维护。它是一个跨平台的工具,可以用于开发多种编程语言,如Java、C/C++、Python、PHP、Rust等。Eclipse提供了一个可扩展的架构,允许开发者通过安装插件来扩展其功能,因此它被广泛用于各种软件开发......
  • 无涯教程-RegExp.prototype.toString()函数
    toString方法返回正则表达式的字符串表示形式。RegExp.prototype.toString()-语法RegExpObject.toString();RegExp.prototype.toString()-返回值返回正则表达式的字符串表示形式。RegExp.prototype.toString()-示例varstr="Javascriptisaninterestin......
  • 无涯教程-RegExp.prototype.split()函数
    此方法根据指定的分隔符分割字符串对象,并返回字符串数组。RegExp.prototype.split()-语法str.split([separator[,limit]])separator  - 可选。指定字符串的分隔符。limit      - 可选。指定要找到的拆分数量的限制。RegExp.prototype.sp......
  • 无涯教程-RegExp.prototype.match()函数
    此方法检索匹配项。RegExp.prototype.match()-语法str.match(regexp)Regexp  - 正则表达式对象。RegExp.prototype.match()-返回值返回一个匹配数组,如果找不到匹配项,则返回null。RegExp.prototype.match()-示例varstr='WelcometoES6.Weare......
  • 无涯教程-RegExp.prototype.test()函数
    test()方法在字符串中搜索与正则表达式匹配的文本。如果找到匹配项,则返回true;否则,它返回false。RegExp.prototype.test()-语法RegExpObject.test(string);string  - 要搜索的字符串。RegExp.prototype.test()-返回值如果找到匹配项,则返回匹配的文本,否......