79.【Mybatis】(一)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 79.【Mybatis】

(一)、什么是Mybatis?

1.基本介绍

https://mybatis.org/mybatis-3/zh/index.html

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

2.历史进程

MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。

3.如何获得Mybatis?

(1).Github获取

(2).Maven获取

<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.2</version>
</dependency>

3.什么是持久化

(1).数据持久化: 就是将程序的数据在持久状态顺势状态转换的过程。

  • 内存。断电就失去
  • 数据库。 io持久化数据

(2).有一些对象,不能让他丢掉;–》比如支付宝里面的金额。

(3).内存太贵了。

4.为什么需要持久层

(1).Dao层 ,Service层, Controller层…

  • 完成持久化工作的代码块
  • 层界限十分明显

5.为什么要使用Mybatis?

  • 方便
  • 传统的JDBC代码太复杂。简化。框架
  • 帮助程序员将数据存入到数据库中
  • 不用Mybatis也可以,更容易上手。(技术没有高低之分)
  • 简单易学,灵活,提供xml标签
    最重要的一点: 使用的人多

(二)、第一个Mybatis程序

1.学习思路

搭建环境-----》导入Mybatis—》编写代码—》测试

2.搭建环境

创建一个普通的Maven项目

3.需要依赖

<!--导入依赖-->
    <dependencies>
        <!--  mybatis      -->
        <!-- https://mvnrepository.com/artifact/org.mybatis/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>
            <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>
    </dependencies>
<!--    !&#45;&#45;在build中配置resources&ndash;&gt;-->
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>
    </build>

4.删除Src 创建一个Moduel

5.编写mybatis的核心配置文件(resource 创建一个.xml文件)

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-config.dtd">
<!--configuration核心配置文件-->
<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;charEncoding=UTF8"/>
                <property name="username" value="root"/>
                <property name="password" value="121788"/>
            </dataSource>
        </environment>
    </environments>
<!--    每一个Mapper.xml都需要在Mybatis核心配置文件中注册-->
    <mappers>
        <mapper resource="Com/Jsxs/Dao/UserMappr.xml"/>
    </mappers>
</configuration>

6.编写Mybatis工具类(工厂)

package Com.Jsxs.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;
//  SqlSessionFactory---->sqlSession
public class MybatisUtils {
    private static SqlSessionFactory sqlSessionFactory;
    static {
        String resource = "mybatis-config.xml";
        try {
//  第一步:     获取SqlSessionFactory对象
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
//    既然有了sqlSessionFactory,顾名思义,我们就可以从中获得SqlSession的实列了
//    sqlSession完全包含了面向数据库执行SQL命令所需要的所有方法
    public static SqlSession getSqlSession(){
        SqlSession sqlSession = sqlSessionFactory.openSession();
        return sqlSession;
    }
}

7.编写代码(实体类-Dao接口-接口实现类)

  • 实体类: 实体类要和属性的字段名相同,否则输出会为null
package Com.Jsxs.pojo;
public class User {
    private int id;
    private String mame;
    private String pwd;
    public User() {
    }
    public User(int id, String mame, String pwd) {
        this.id = id;
        this.mame = mame;
        this.pwd = pwd;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getMame() {
        return mame;
    }
    public void setMame(String mame) {
        this.mame = mame;
    }
    public String getPwd() {
        return pwd;
    }
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
}
  • Dao接口
package Com.Jsxs.Dao;
import Com.Jsxs.pojo.User;
import java.util.List;
public interface UserDao {
    List<User> getUserList();
}
  • 接口实现类由原来的UserDaoImpl转换成UserMapper.xml配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace绑定一个对应的Dao/Mapper接口-->
<mapper namespace="Com.Jsxs.Dao.UserDao">
<!--    查询语句-->
    <select id="getUserList" resultType="Com.Jsxs.pojo.User">
        select *from mybatis.user
    </select>
</mapper>

8.测试

package Com.Jsxs.Dao;
import Com.Jsxs.pojo.User;
import Com.Jsxs.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();
//        方式二:
        List<User> userList = sqlSession.selectList("Com.Jsxs.Dao.UserDao.getUserList");
        for (User user : userList) {
            System.out.println(user);
        }
//        关闭sqlSession
        sqlSession.close();
    }
}

9.分析:

1.核心配置文件

2.UserMapper.xml文件

3.工具类链接(Utils)

10.执行SQL语句有两种方式

(1).使用sqlSession.selectList(类所在路径+实现的方法)

public void testRowBounds(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
//        类的路径+实现的方法
        List<User> list = sqlSession.selectList("Com.Jsxs.Dao.UserMapper.getUserByRowBounds");
        for (User user : list) {
            System.out.println(user);
        }
        sqlSession.close();
    }

(2).使用getMapper(实现的方法.class)

@Test
    public void test(){
//        第一步: 获取sqlSession对象
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User userById = mapper.getUserById(2);
        System.out.println(userById);
//        关闭sqlSession
        sqlSession.close();
    }


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
SQL Java 数据库连接
|
SQL XML Java
|
4月前
|
Java 关系型数据库 数据库连接
Mybatis-plus
Mybatis-plus
|
2月前
|
算法 Java 数据库连接
mybatis plus 主键策略
mybatis plus 主键策略
35 2
|
1月前
|
SQL Java 数据库连接
MyBatis常用的小技巧
这篇文章分享了MyBatis中的一些常用技巧,包括使用`in`语句处理字符串或集合参数、在`insert`语句后获取自增ID,以及使用`like concat`进行模糊查询以防止SQL注入。
15 0
|
4月前
|
SQL Java 数据库连接
MyBatis
MyBatis
38 2
|
Java 数据库连接 测试技术
Mybatis-PLUS详解
Mybatis-PLUS详解
217 0
|
SQL XML 存储
MyBatis(上)
MyBatis(上)
|
SQL XML 存储
Mybatis总结
Mybatis总结
101 0
|
SQL XML 缓存
Mybatis详解(1)
你好看官,里面请!今天笔者讲的是Mybatis详解(1)。不懂或者觉得我写的有问题可以在评论区留言,我看到会及时回复。 注意:本文仅用于学习参考,不可用于商业用途,如需转载请跟我联系。
230 2