Mybatis【第一个 Mybatis 程序】

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 1、配置 pom.xml1.1、依赖的 jar包

一、Maven 环境配置

1、配置 pom.xml

1.1、依赖的 jar包

<dependencies>
    <!--   mysql8 驱动,与本地mysql版本需要一致   -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.30</version>
        </dependency>
    <!--  mybatis  -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version>
        </dependency>
    <!--  junit,测试工具   -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>

1.2、防止资源导出失败

<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>
2、在resources下编写 Mybatis核心配置文件 
命名为mybatis-config.xml,作用是连接数据库
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//OTD Config 3.0//EN"
        "http://mybatis.org/schema/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=UTF-8"/>
                    <property name="username" value="root"/>
                    <property name="password" value="******"/>
                </dataSource>
            </environment>
        </environments>
</configuration>

二、搭建结构

1、编写mybatis工具类(utils)

作用是获取SqlSession对象,相当于JDBC中的 Statement对象


package com.study.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 {
            //1.获取sqlSessionFactory对象
            String resource = "mybatis-config.xml";//maven项目下路径这么写
            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();
    }
}


2、编写实体类(pojo)

实现所有 get和set 方法并重写 toString方法

package com.study.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 + '\'' +
                '}';
    }
}


3、Mybatis 的实现(dao层)

以添加用户为例


3.1、编写接口(UserMapper.java)

接口的实现在映射文件(UserMapper.xml)中实现


public interface UserMapper {
    int addUser(User user);
}

3.2、通过映射绑定并实现接口(UserMapper.xml)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//OTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.study.dao.UserMapper">
    <insert id="addUser" parameterType="com.study.pojo.User">
        insert into mybatis.user (id,name,pwd)
        values (#{id},#{name},#{pwd});
    </insert>
</mapper>

三、测试

1、搭建数据库

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;

2、编写测试类

注意:增删改需要提交事务 , 查询语句不需要


Mybatis 操作数据库和 JDBC 比较相似但 Mybatis更加简单便捷!


@Test
    public void updateUser(){
        //1.获取数据库操作对象
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        //2.获取接口
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        //3.执行SQL语句
        User user = new User(1,"燕双鹰","123456");
        mapper.addUser(user);
        //4.提交事务
        sqlSession.commit();
        //5.关闭资源
        sqlSession.close();
    }


3、运行结果


image.png

 


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
15天前
|
SQL 安全 Java
MyBatis(6)#{}和${}的区别
在MyBatis中,`#{}`和`${}`是用于在SQL语句中嵌入参数的两种方式。`#{}`用于预处理参数,可以防止SQL注入;而`${}`进行直接字符串替换,适用于动态插入表名或列名,但存在SQL注入风险。建议优先使用`#{}`,并在必要时谨慎使用`${}`。
|
6月前
|
SQL Java 数据库连接
Mybatis中#{}和${}的区别
Mybatis中#{}和${}的区别
45 0
|
6月前
|
Java 数据库连接 数据库
Mybatis【第一个 Mybatis 程序】
Mybatis【第一个 Mybatis 程序】
|
11月前
|
SQL XML Java
Mybatis中#{}与${}的区别
Mybatis中#{}与${}的区别
52 0
|
SQL Java 数据库连接
Mybatis中#和$的区别
$将传入的数据直接显示生成在sql中。如:order by $user_id$,如果传入的值是111,那么解析成sql时的值为order by user_id, 如果传入的值是id,则解析成的sql为order by id.
|
SQL 存储 缓存
mybatis中#{}和${}的区别
mybatis中#{}和${}的区别
184 0
mybatis中#{}和${}的区别
|
SQL Java 数据库连接
Mybatis中的#与$的区别
Mybatis中的#与$的区别
91 0
|
SQL Java 数据库连接
mybatis中的#{}和${}的区别
mybatis中的#{}和${}的区别
111 0
mybatis中的#{}和${}的区别
|
SQL XML 安全
Mybatis中${}和#{}的区别
Mybatis中${}和#{}的区别
580 0
|
SQL 存储 Java
【Mybatis】(一)MyBatis入门 & 第一个MyBatis实例
【Mybatis】(一)MyBatis入门 & 第一个MyBatis实例
233 0
【Mybatis】(一)MyBatis入门 & 第一个MyBatis实例