mybatis 入门案例
 作者:Geek_5829b6
- 2022 年 8 月 18 日 广东
- 本文字数:2640 字 - 阅读完需:约 9 分钟 
环境说明
使用工具陈列
- jdk17 
- mybatis3.5 
- mysql8 
- idea 2022 
- maven3.8 
依赖准备
<dependencies>    <dependency>        <groupId>org.mybatis</groupId>        <artifactId>mybatis</artifactId>        <version>3.5.10</version>    </dependency>    <dependency>        <groupId>mysql</groupId>        <artifactId>mysql-connector-java</artifactId>        <version>8.0.30</version>    </dependency></dependencies>
复制代码
 配置准备
我们需要在类路径下创建一个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">
复制代码
 我们需要在里面指定一些配置,也就是数据库链接的基本资料,maven reimport 依赖,一般写代码就会有提示了
下面给出一个完整的配置
<?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="dev">        <environment id="dev">            <transactionManager type="jdbc"/>            <dataSource type="POOLED">                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>                <property name="url" value="jdbc:mysql://localhost:33060/hey_mybatis"/>                <property name="username" value="root"/>                <property name="password" value="root"/>            </dataSource>        </environment>    </environments></configuration>
复制代码
 注意端口,我这里是 33060 (docker 安装 mysql),如果你的是 3306 记得修改。
数据库准备
CREATE TABLE `article` (  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键',  `title` varchar(255) DEFAULT NULL COMMENT '标题',  `content` varchar(2000) DEFAULT NULL COMMENT '内容',  `created` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',  `updated` datetime DEFAULT NULL COMMENT '更新时间',  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
复制代码
 数据模型准备
如果希望简化 set get 的写法,可以考虑引入 lombok
<dependency>    <groupId>org.projectlombok</groupId>    <artifactId>lombok</artifactId>    <version>1.18.24</version>    <scope>provided</scope></dependency>
复制代码
 数据库对应的模型(如果不以 oop 的 方式操作,此时它还不需要)
package com.aiyeni.entity;
import lombok.Data;import lombok.ToString;
import java.time.LocalDateTime;
@Data@ToStringpublic class Article {    private Long id;    private String title;    private String content;    private LocalDateTime created;    private LocalDateTime updated;}
复制代码
 mapper 定义
- mybatis 通过 namespace + mapper 里面的元素 ID 组成一个唯一的逻辑单元进行区分要操作的 sql 
- 外出的 insert 标签等用去区分 crud,参数的获取通过 #{xxx}的形式(后面会详细讨论) 
<?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="com.aiyeni.mapper.ArticleMapper">    <insert id="insert">        insert into article(title, content) value (#{title},#{content})    </insert></mapper>
复制代码
 注册 mapper,在 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="dev">        <environment id="dev">            <transactionManager type="jdbc"/>            <dataSource type="POOLED">                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>                <property name="url" value="jdbc:mysql://localhost:33060/hey_mybatis"/>                <property name="username" value="root"/>                <property name="password" value="root"/>            </dataSource>        </environment>    </environments>    <!-- 追加内容 -->    <mappers>        <mapper resource="com/aiyeni/mapper/ArticleMapper.xml"></mapper>    </mappers></configuration>
复制代码
 文件的存储位置如下:
 
 DB 操作
- 读取配置 
- 构建对象 
- 使用 mybatis 的提供的逻辑对象操作 db 
完整代码
package com.aiyeni;
import com.aiyeni.entity.Article;import com.mysql.cj.Session;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;import java.io.Serializable;
public class Demo {
    public static void main(String[] args) {
        // 读取配置文件
        var config = "mybatis-config.xml";
        SqlSession session = null;        try {            // 将文件转换为输入流            var inputStream = Resources.getResourceAsStream(config);
            // 构建一个会话工厂            var sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            // 工厂生产会话
            session = sessionFactory.openSession();            // 会话屏蔽内部的细节
            Article article = new Article();            article.setTitle("洗澡");            article.setContent("洗个痛快澡");            // 执行插入            session.insert("com.aiyeni.mapper.ArticleMapper.insert",article);
            // 提交事务,如果不写是不会持久化的            session.commit();
        } catch (IOException e) {            throw new RuntimeException(e);        } finally {            if (session != null) {                session.close();            }        }    }}
复制代码
 划线
评论
复制
发布于: 刚刚阅读数: 5
版权声明: 本文为 InfoQ 作者【Geek_5829b6】的原创文章。
原文链接:【http://xie.infoq.cn/article/309dd6cfa5124fc3e698271d2】。文章转载请联系作者。
Geek_5829b6
关注
还未添加个人签名 2019.09.01 加入
还未添加个人简介









 
    
评论