首页 > 其他分享 >一篇快速上手MyBatis

一篇快速上手MyBatis

时间:2024-08-29 18:22:16浏览次数:6  
标签:account 一篇 创建 数据库 public Mybatis 上手 MyBatis id

目录

一. Mybatis介绍

二. Mybatis搭建

1. 导入Mybatis依赖的jar包

2. 创建Mybatis全局配置文件  

3. 定义一个接口

4. 创建sql映射文件

5. 测试 

* MyBatisX插件安装

三. 数据库连接池

四. 参数传递

1. 将数据封装到对象中

2. 使用@Param注解

五. 数据库事务

六. 单元测试

七. Mybatis基础操作

1. 新增操作

2. 删除操作

3. 修改操作 

4. 单表查询


一. Mybatis介绍

 Mybatis的历史  

• Mybatis原是apache下面的一个开源项目,起初叫ibatis,2010年开发团队转移到谷歌旗下,改名为Mybatis

▐ Mybatis介绍

• Mybatis是一款优秀的持久层框架(dao层)

• Mybatis是对JDBC进行了封装,避免了几乎所有的JDBC代码手动设置参数以及手动获取结果集的操作

• Mybatis将JDBC中的接口进行封装,提供了它自己的类和接口实现

• Mybatis可以使用xml配置和注解的方式,将数据库中的数据自动映射到java对象中,是一种ORM实现(对象关系映射)

• Mybatis还提供了动态sql和数据缓存

二. Mybatis搭建

1. 导入Mybatis依赖的jar包

创建maven项目,并在pom.xml文件中导入Mybatis所依赖的jar包,由于Mybatis是对JDBC代码进行了封装,所以还需要导入mysql数据库驱动包,如图所示:

    <dependencies>
        <!--  mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.2</version>
        </dependency>

        <!--  mysql-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>
    </dependencies>

2. 创建Mybatis全局配置文件  

右键resources目录,选择File,创建一个xml文件,此文件用来写Mybatis全局配置相关的代码,如图所示:

创建之后将下面的代码复制粘贴到此配置文件中(mybatis.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>
    <settings>
        <!-- 日志 -->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
        <!-- 开启数据库列名与java属性名转换,例如user_name  userName  -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

    <typeAliases>
        <package name="com.ffyc.mybatispro.model"/>
    </typeAliases>

    <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://127.0.0.1:3306/ssmdb?serverTimezone=Asia/Shanghai" />
                <property name="username" value="root" />
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <!--    配置sql映射文件-->
    <mappers>
    </mappers>

</configuration>

➱注意将参数修改为自己的数据库连接信息 

代码解读:

3. 定义一个接口

➱ 我们以通过id查询管理员信息为例,数据库表如图所示 :

➱ 表创建代码:

-- 创建一张表(admin)
CREATE TABLE admin(
 id INT PRIMARY KEY AUTO_INCREMENT,
 account VARCHAR(20) UNIQUE,
 PASSWORD VARCHAR(50) NOT NULL,
 gender CHAR(1)
)

➱ 当然还需要创建一个实体类:(Admin) 

package com.ffyc.mybatispro.model;

public class Admin {
    private int id;
    private String account;
    private String password;
    private String gender;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getAccount() {
        return account;
    }

    public void setAccount(String account) {
        this.account = account;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }
}

4. 创建sql映射文件

与全局配置文件一样,sql映射文件同样在resources目录下创建,同样是xml文件,并且通常写在mappers目录下,如图所示:

<?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.ffyc.mybatispro.dao.AdminDao">

    <select id="findAdminById" parameterType="int" resultType="Admin">
        select * from admin where id = #{id}
    </select>
</mapper>

创建完sql映射文件后还需要再全局配置文件中进行配置:

5. 测试 

import com.ffyc.mybatispro.dao.AdminDao;
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.Reader;

public class Test1 {
    public static void main(String[] args) throws IOException {
        //1.Mybatis读取配置文件
        Reader reader = Resources.getResourceAsReader("mybatis.xml");
        //2.创建SqlSessionFactory,负责创建SqlSession(负责连接数据库的会话对象,,类似Connection)
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
        //3.创建SqlSession
        SqlSession sqlSession =sessionFactory.openSession();
        //4.创建接口的代理对象
        AdminDao adminDao = sqlSession.getMapper(AdminDao.class);
        adminDao.findAdminById(1);
        //提交数据库事务
        sqlSession.commit();
        //关闭连接
        sqlSession.close();
    }
}

* MyBatisX插件安装

三. 数据库连接池

连接数据库后,每次访问数据库时都需要创建一个Connection连接对象,并且用完后关闭销毁,若在访问量很大的情况下,这样每次创建新的连接对象是很耗时的,所以可以使用数据库连接池,在池中事先创建一些连接对象(Connection),当用户访问时直接从池中获取一个连接对象,并且用完后不会销毁,而是继续返还到池中,从而减少频繁地创建和销毁连接对象,提高效率!

在Mybatis全局配置文件中对应代码如图:

四. 参数传递

上文中通过id查询管理员信息的案例中,我们只需要传入单个参数(id)即可,属于单个参数的传递,那么要是多个参数该怎么传递呢?

1. 将数据封装到对象中

解决方法1:封装到对象中,通过对象中定义的属性传参

以登录为例:需要传入account和password两个参数

2. 使用@Param注解

解决方法2:使用@Param注解

五. 数据库事务

•  简单讲,事务管理就是一次对数据库操作过程中,执行多条sql的管理。

 •  事务只针对新增,修改,删除操作,查询是不需要提交事务的。

 •  当执行一系列数据库操作时,JDBC事务管理器会确保要么所有操作都成功提交,要么在出现错误时全部回滚,以保证数据的完整性和一致性。

 •  例如生活中的转账操作,要从A账户向B账户转200元,那么就需要向数据库发送2条sql

    sql1:A账户 -200                                   ①

    其它代码(可能出现异常)                    ②

    sql2:B账号 +200                                  ③

当JDBC把sql代码发送给数据库时,此时不会立刻执行,而是把所有操作都成功执行完后再提交事务

若每执行一条sql就提交一次事务,那么如果①成功执行,②出现异常,导致③没有执行,但由于①成功执行后提交了事务,会出现A账号-200,B账户没有+200的情况!

六. 单元测试

单元测试就是以方法为单位进行测试。

首先需要在maven项目的pom.xml文件中导入junit组件,然后在要测试的方法上添加@Test注解标签即可。

        <!--junit-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>provided</scope>
        </dependency>

七. Mybatis基础操作

1. 新增操作

 

添加成功! 

<!--    映射文件新增操作sql语句-->
    <insert id="insertAdmin" parameterType="Admin">
        insert into admin (account,password,gender)values(#{account},#{password},#{gender})
    </insert>

2. 删除操作

<!--    删除操作-->
    <delete id="deleteAdmin" parameterType="int">
        delete from admin where id=#{id}
    </delete>

3. 修改操作 

<!--    修改操作-->
    <update id="updateAdmin" parameterType="Admin">
        update admin set account=#{account},password=#{password} where id=#{id}
    </update>

4. 单表查询

简单的单表查询在案例中已经给大家演示了,这里不做具体解读了,只分享代码:

//定义接口
Admin findAdminById(int id);

//映射sql
<select id="findAdminById" parameterType="int" resultType="Admin">
    select * from admin where id = #{id}
</select>
    
//测试类          
Reader reader = Resources.getResourceAsReader("mybatis.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession sqlSession =sessionFactory.openSession();
AdminDao adminDao = sqlSession.getMapper(AdminDao.class);
adminDao.findAdminById(1);  //单个参数传递
//查询操作不需要提交事务

关于多表的关联查询内容涉及较多,会在下一篇文章中详细讲解...




 本次的分享就到此为止了,希望我的分享能给您带来帮助,创作不易也欢迎大家三连支持,你们的点赞就是博主更新最大的动力!如有不同意见,欢迎评论区积极讨论交流,让我们一起学习进步!有相关问题也可以私信博主,评论区和私信都会认真查看的,我们下次再见

 海漫浩浩,我亦苦作舟!大家一起学习,一起进步!    本人微信:g2279605572(欢迎大家与我交流)   

标签:account,一篇,创建,数据库,public,Mybatis,上手,MyBatis,id
From: https://blog.csdn.net/2301_79263365/article/details/141525021

相关文章

  • (7.22-7.28)发一篇博文赢百元奖品!前10有奖!【已结束】
    AIGC这个话题,让人既熟悉又陌生!你用过哪些AIGC领域的工具?分享AIGC领域的产品测评使用、底层技术分析、应用案例...让大家一起认识AIGC。围绕AIGC主题创作1篇文章,文章被精选且阅读量排名位于发文当周前10名可以赢取相应礼品。活动时间7月22日——7月28日活动礼品我们准备了几款实体奖......
  • 首次发一篇文章,0元领定制版大鼠标垫!(3步领取,7日到手)
    51CTO博客首发福利来啦!现在,首次发一篇文章,0元领定制版大鼠标垫!一、3步领取,7日到手发布文章——>等待审核(99%通过率)——>填邮寄信息①发布文章戳此直达>>②等待审核(99%通过率)发一篇不水文的原创技术文章必有奖。例如:刷题笔记、代码记录...技术分享。若审核不通过,可加下方小助手微信,......
  • Mybatis-puls中select查询方法报错Can not find table primary key in Class
    1、项目参数springboot2.6.13jdk8Mybatis-Plus3.5.42、问题描述Mybatis-puls中select查询方法报错CannotfindtableprimarykeyinClass,org.apache.ibatis.binding.BindingException:Invalidboundstatement(notfound):com.example.dao.FLowerDao.selectById3、......
  • Mybatis-puls中select查询方法返回为空null
    1、项目参数springboot2.6.13jdk8Mybatis-Plus3.5.42、问题描述在3.5.4版本的MP中使用select方法查询到数据,却返回为空实体类publicclassFlower{@TableId(value="flower_id",type=IdType.INPUT)privateintflower_id;privateStringflower_name;......
  • 优秀的网络安全工程师应该有哪些能力?零基础入门到精通,收藏这一篇就够了
    网络安全工程师是一个各行各业都需要的职业,工作内容属性决定了它不会只在某一方面专精,需要掌握网络维护、设计、部署、运维、网络安全等技能。目前稍有经验的薪资在10K-30K之间,全国的网络安全工程师还处于一个供不应求的状态,因此非常建议大家尝试学习一下咱们的网络安全工程......
  • MyBatis篇
    1、什么是MyBatis(1)Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql,可以严格控制sql执行性能,灵活度高。(2)MyBatis可以使用XML或注解......
  • Ant-Design-Vue快速上手指南+排坑
    Ant-Design-Vue是基于Vue.js的UI组件库,它提供了丰富的组件,帮助开发者快速构建高质量的Vue应用。以下是一个Ant-Design-Vue的快速上手指南及排坑建议:一、快速上手指南1.环境准备Node.js:推荐使用16.x及以上版本。VueCLI:Vue3的项目建议使用@vue/cli来创建。2.安装Ant-Des......
  • mybatis-plus getOne 内存溢出
    网上说是lambda表达式方式的条件构造器的问题mybatis-plus-boot-starter版本3.4.1Causedby:org.apache.ibatis.builder.BuilderException:Errorevaluatingexpression'ew.sqlSegment!=nullandew.sqlSegment!=''andew.nonEmptyOfWhere'.Cause:org.apache.iba......
  • MybatisPlus学习笔记
    MyBatisPlus从入门到精通1.概述MybatisPlus是一款Mybatis增强工具,用于简化开发,提高效率。它在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。官网:https://baomidou.com/2.快速入门2.0准备工作①准备数据CREATETABLE`user`(`id`bigint(20)NOTNULL......
  • 【Statement】Mybatis操作数据库核心
    StatementstatementStatement的类型使用场景在MyBatis中的配置核心标签1.`<select>`标签2.`<insert>`标签3.`<update>`标签4.`<delete>`标签总结statement在MyBatis中,Statement是用于执行SQL语句的核心组件之一。它对应JDBC中的java.sql.Statem......