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

本文涉及的产品
云数据库 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导出资源问题

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
Java 关系型数据库 数据库连接
Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
30 1
|
2月前
|
XML Java 数据库连接
mybatis环境搭建步骤(含配置文件代码)
mybatis环境搭建步骤(含配置文件代码)
15 1
|
2月前
ssm(Spring+Spring mvc+mybatis)——updateDept.jsp
ssm(Spring+Spring mvc+mybatis)——updateDept.jsp
11 0
|
2月前
ssm(Spring+Spring mvc+mybatis)——showDept.jsp
ssm(Spring+Spring mvc+mybatis)——showDept.jsp
9 0
|
22天前
|
数据库
Springboot+mybatis-plus逆向工程生成代码器
Springboot+mybatis-plus逆向工程生成代码器
|
2月前
ssm(Spring+Spring mvc+mybatis)Dao层实现类——DeptDaoImpl
ssm(Spring+Spring mvc+mybatis)Dao层实现类——DeptDaoImpl
12 0
|
2月前
ssm(Spring+Spring mvc+mybatis)Dao接口——IDeptDao
ssm(Spring+Spring mvc+mybatis)Dao接口——IDeptDao
9 0
|
2月前
ssm(Spring+Spring mvc+mybatis)实体类——Dept
ssm(Spring+Spring mvc+mybatis)实体类——Dept
15 0
|
2月前
|
Java 关系型数据库 MySQL
ssm(Spring+Spring mvc+mybatis)
ssm(Spring+Spring mvc+mybatis)
14 0
|
2月前
|
关系型数据库 Java 数据库连接
如何利用Mybatis-Plus自动生成代码(超详细注解)
如何利用Mybatis-Plus自动生成代码(超详细注解)
29 1