SSM复习之mybatis01:Mybatis简介-第一个Mybatis代码简单实现

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: SSM复习之mybatis01:Mybatis简介-第一个Mybatis代码简单实现

1.1、Mybatis简介


1.1、什么是Mybatis


  • MyBatis是一款优秀的持久层框架。 它支持定制化SQL、存储过程以及高级映射


  • MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集合。


  • MyBatis可以使用简单的XML或注解来配置和映射原生类型、接口和Java的pojo实体类为数据库中的记录。


如何获得Mybatis


maven仓库:https://mvnrepository.com/

GitHub:https://github.com/mybatis/mybatis-3/releases

中文文档:https://mybatis.net.cn/getting-started.html


1.2、什么是持久化


数据持久化


  • 持久化就是将程序的数据在持久状态和瞬时状态转化的过程


内存:断点即失


  • 数据库(jdbc)、io文件持久化


为什么需要持久化?


  • 有一些对象,不能让他断电即失


1.3、持久层


  • Dao层、service层、Controller层。 完成持久化工作的代码块。 层界限十分明显。


1.4、为什么需要Mybatis?


帮助开发者将数据存入到数据库中。


传统得JDBC代码太复杂了。用一个框架模板做简化。


特性:


  1. 解除sql与程序代码耦合,提高可维护性。


  1. 便于统一管理和优化。


  1. 提供xml标签,支持编写动态sql。


  1. 提供对象关系映射标签,支持对象关系组件维护。



2、Mybatis程序


  • 思路:搭建环境->导入Mybatis->编写代码->测试


2.1、编写数据库


搭建数据库 数据库名:mybati 数据表:myone 数据表内容:id name pwd 三个属性


CREATE DATABASE 'mybati'
user 'mybati'
CREATE TABLE 'user'(
'id'  INT(20) NOT NULL PRIMARY KEY,
'name' VARCHAR(30) DEFAULT NULL,
'pwd' VARCHAR(30) DEFAULT NULL
)ENGINE=INNODB DEFAULT CHARSET=utf8;
INSERT INTO 'myone'('id','name','pwd') VALUES (1,'LP','123'),(2,'A','123')


  1. 新建maven/springboot项目


  1. 配置setting中得maven路径


  1. 删除src文件夹(为了避免多次导包,删除后可建立多个子工程) 导入maven依赖


  <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.49</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.26</version>
        </dependency>


  • 创建一个module模块 并配置核心配置文件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">
            <!--        事物管理JDBC-->
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <!--            驱动-->
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <!--            url路径-->
                <property name="url" value="jdbc:mysql://localhost:3306/mybati?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8" />
                <property name="username" value="root" />
                <property name="password" value="x5" />
            </dataSource>
        </environment>
    </environments>
    <!--每个Mapper.xml都需要在Mybatis核心配置文件中注册!!-->
    <mappers>
        <mapper resource="demo/Mapper/userMapper.xml" />
    </mappers>
</configuration>
  • 编写MyBatisUtils工具类代码
 public class MyBatisUtils {
    private static SqlSessionFactory sqlSessionFactory;
    static{
        try{
            //        使用mybatis第一步:获取sqlSessionFactory对象
            String resource="mybatis-config.xml";
            InputStream inputStream= Resources.getResourceAsStream(resource);
            sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
        }catch (IOException e){
            e.printStackTrace();
        }
    }
    //    可以使用Session
    public static SqlSession getSqlSession(){
//        SqlSession sqlSession=sqlSessionFactory.openSession();
//        return sqlSession;
        return sqlSessionFactory.openSession();
    }
}



  • 实体pojo类,这里用到了lombok得@Data注解,省略了getter和setter。


@Data
public class User {
    private int id;
    private String name;
    private String pwd;
}


  • 接口类、接口实现类mapper.xml实现


接口类userMapper


public interface userMapper{
    public List<User> query();
}


接口实现类mapper.xml由原来得UserServiceImpl实现类转换成mapper.xm配置文件


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//OTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/schema/mybatis-3-mapper.dtd">
<!--绑定一个对应得mapper接口-->
<mapper namespace="demo.Mapper.userMapper">
    <!--    select查询语句-->
    <select id="query" resultType="demo.pojo.User">
        select * from user
    </select>
</mapper>



2.4、junit测试


package demo.Mapper;
import demo.pojo.User;
import demo.utils.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class userMapperTest {
    @Test
    public void test()
    {
//        第一步:获得SqlSession对象
        SqlSession sqlSession= MyBatisUtils.getSqlSession();
//        方式一:getMapper
        userMapper usermapper=sqlSession.getMapper(userMapper.class);
        List<User> userList = usermapper.query();
        for (User u : userList) {
            System.out.println(u);
        }
//        关闭SqlSession
        sqlSession.close();
    }
}



注:如果遇到Mapper文件找不到得问题,则将该代码放进父工程和子工程得pom文件中去。


MapperRegistrymappers找不到userMapper接口时:


核心配置文件MyBatisUtils中注册mappers


由于maven的约定大于配置,如果遇到配置文件无法被导出或生效的问题,可以用下列代码解决



 <!--在build中配置resources,来防止我们资源导出失败的问题!-->
    <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>


运行思路:


  • 创建数据库和数据表


  • 创建项目并在setting中配置maven路径


  • 导出maven文件到pom中并更新


  • 删除src文件夹并创建一个module子项目


  • 配置核心文件mybatis-config.xml


  • 写MybatisUtils工具类


  • 编写pojo实体类


  • 编写mapper接口以及在resource文件夹下创建mapper.xml作为接口实现类


  • 利用junit实现在test中创建和mapper接口同级的测试类并测试是否成功。



可能会遇到的问题:


1.配置文件没有注册


2.绑定接口错误


3.方法名不对


4.返回类型不对


5.maven导出资源问题

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
25天前
|
XML Java 数据库连接
mybatis plus模板快速生成代码
MybatisX 是一款提升开发效率的 IDEA 插件,尤其适用于处理多表情况。通过 MybatisX-Generator,用户能轻松生成实体类、服务类、Mapper 接口及 XML 文件,显著减少工作量。安装步骤简便:通过 File -&gt; Settings -&gt; Plugins -&gt; Browse Repositories 完成搜索与安装流程。集成数据库后,右键所需操作的数据表,选择 MyBatisX-Generator 进行自动化代码生成。更多细节可参考相关教程。
45 0
|
2月前
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
5月前
|
JavaScript Java 测试技术
基于小程序的购物系统+ssm附带文章和源代码
基于小程序的购物系统+ssm附带文章和源代码
34 0
|
4月前
|
SQL 前端开发 Java
我这样写代码,比直接使用 MyBatis 效率提高了 100 倍
Mybatis Hibernate 等都是我们常用的 ORM, 它们有时候很好用,但某些场景下也很繁琐,比如下文要讲的一个需求,最后本文会给出比直接用这些 ORM 开发效率至少提高 100 倍的方法...
45 1
我这样写代码,比直接使用 MyBatis 效率提高了 100 倍
|
4月前
|
缓存 NoSQL Java
在 SSM 架构(Spring + SpringMVC + MyBatis)中,可以通过 Spring 的注解式缓存来实现 Redis 缓存功能
【6月更文挑战第18天】在SSM(Spring+SpringMVC+MyBatis)中集成Redis缓存,涉及以下步骤:添加Spring Boot的`spring-boot-starter-data-redis`依赖;配置Redis连接池(如JedisPoolConfig)和连接工厂;在Service层使用`@Cacheable`注解标记缓存方法,指定缓存名和键生成策略;最后,在主配置类启用缓存注解。通过这些步骤,可以利用Spring的注解实现Redis缓存。
69 2
|
4月前
|
Java 数据库连接 Android开发
SSM框架——使用MyBatis Generator自动创建代码
SSM框架——使用MyBatis Generator自动创建代码
36 2
|
3月前
|
Java 数据库连接 Maven
Private method ‘getVideoList()‘ is never used,mybatis必须指定Mapper文件和实体目录,在参考其他人写的代码,要认真分析别人的代码,不要丢失
Private method ‘getVideoList()‘ is never used,mybatis必须指定Mapper文件和实体目录,在参考其他人写的代码,要认真分析别人的代码,不要丢失
|
5月前
|
Java 关系型数据库 MySQL
SpringBoot整合JUnit、MyBatis、SSM
SpringBoot整合JUnit、MyBatis、SSM
38 4
|
4月前
|
SQL Java 数据库连接
MyBatis SQL 批量更新(代码➕案例)
MyBatis SQL 批量更新(代码➕案例)
652 0
|
5月前
|
数据库连接
java+ssm+vue代码视频学习讲解
java+ssm+vue代码视频学习讲解
31 0
下一篇
无影云桌面