千家信息网

Java中Mybatis框架增删查改与核心配置的示例分析

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,小编给大家分享一下Java中Mybatis框架增删查改与核心配置的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!原始JDBC操作原始jdbc操作(查询数据)原始jdbc操作(
千家信息网最后更新 2026年11月04日Java中Mybatis框架增删查改与核心配置的示例分析

小编给大家分享一下Java中Mybatis框架增删查改与核心配置的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

    原始JDBC操作

    原始jdbc操作(查询数据)

    原始jdbc操作(插入数据)

    原始jdbc操作的分析原始jdbc开发存在的问题如下:
    ①数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能
    ②sql 语句在代码中硬编码,造成代码不易维护,实际应用sql变化的可能较大,sql变动需要改变java代码。
    ③查询操作时,需要手动将结果集中的数据手动封装到实体中。插入操作时,需要手动将实体的数据设置到sql语句的占位符位置

    应对上述问题给出的解决方案:
    ①使用数据库连接池初始化连接资源
    ②将sql语句抽取到xml配置文件中
    ③使用反射、内省等底层技术,自动将实体与表进行属性与字段的自动映射

    Mybatis简介

    ①mybatis是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。
    ②mybatis通过xml或注解的方式将要执行的各种statement配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句。
    ③最后mybatis框架执行sql并将结果映射为java对象并返回。采用ORM思想解决了实体和数据库映射的问题,对jdbc进行了封装,屏蔽了jdbc api底层访问细节,使我们不用与jdbc api打交道,就可以完成对数据库的持久化操作。

    Mybatis官网地址:mybatis - MyBatis 3 | Introduction

    Mybatis开发步骤:

    ①添加MyBatis的坐标
    ②创建user数据表
    ③编写User实体类
    ④编写映射文件UserMapper.xml
    ⑤编写核心文件SqlMapConfig.xml
    ⑥编写测试类

    ①添加MyBatis的坐标和其它相关坐标

                        mysql            mysql-connector-java            5.1.32                            org.mybatis            mybatis            3.4.6                            junit            junit            4.12                            log4j            log4j            1.2.17            

    ②创建user数据表

    ③编写User实体类

    public class User {     private int id;    private String username;    private String password;    //省略get和set方法}

    ④编写映射文件UserMapper.xml

            

    ⑤编写Mybatis核心文件SqlMapConfig.xml

                                                                                                                                                         

    ⑥编写测试类

    @Test    //查询操作    public void test1() throws IOException {        //获得核心配置文件        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");        //获得session工厂对象        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);        //获得session回话对象        SqlSession sqlSession = sqlSessionFactory.openSession();        //执行操作  参数:namespace+id        List userList = sqlSession.selectList("userMapper.findAll");        //打印数据        System.out.println(userList);        //释放资源        sqlSession.close();    }

    Mybatis的映射文件概述

    Mybatis的增删改查操作

    ①Mybatis的插入数据操作

    编写UserMapper映射文件

                    insert into user values(#{id},#{username},#{password})    

    编写插入实体的User代码

    @Test    //插入操作    public void test2() throws IOException {         //模拟user对象        User user = new User();        user.setUsername("xxx");        user.setPassword("abc");         //获得核心配置文件        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");        //获得session工厂对象        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);        //获得session回话对象        SqlSession sqlSession = sqlSessionFactory.openSession(true);        //执行操作  参数:namespace+id        sqlSession.insert("userMapper.save",user);         //释放资源        sqlSession.close();    }

    插入操作注意问题:

    插入语句使用insert标签
    在映射文件中使用parameterType属性指定要插入的数据类型
    Sql语句中使用#{实体属性名}方式引用实体中的属性值
    插入操作使用的API是sqlSession.insert("命名空间.id",实体对象);
    插入操作涉及数据库数据变化,所以要使用sqlSession对象显示的提交事务,即sqlSession.commit()

    ②Mybatis的修改数据操作

    编写UserMapper映射文件

                      update user set username=#{username},password=#{password} where id=#{id}    

    编写修改实体的User代码

    @Test    //修改操作    public void test3() throws IOException {         //模拟user对象        User user = new User();        user.setId(7);        user.setUsername("lucy");        user.setPassword("123");         //获得核心配置文件        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");        //获得session工厂对象        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);        //获得session回话对象        SqlSession sqlSession = sqlSessionFactory.openSession();        //执行操作  参数:namespace+id        sqlSession.update("userMapper.update",user);         //mybatis执行更新操作  提交事务   因为mybatis默认不提交事物        sqlSession.commit();         //释放资源        sqlSession.close();    }

    修改操作注意问题:

    修改语句使用update标签
    修改操作使用的API是sqlSession.update("命名空间.id",实体对象);

    ③Mybatis的删除数据操作

    编写UserMapper映射文件

                      delete from user where id=#{abc}    

    编写删除实体的User代码

    @Test    //删除操作    public void test4() throws IOException {         //获得核心配置文件        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");        //获得session工厂对象        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);        //获得session回话对象        SqlSession sqlSession = sqlSessionFactory.openSession();        //执行操作  参数:namespace+id        sqlSession.delete("userMapper.delete",8);         //mybatis执行更新操作  提交事务        sqlSession.commit();         //释放资源        sqlSession.close();    }

    删除操作注意问题:

    删除语句使用delete标签
    Sql语句中使用#{任意字符串}方式引用传递的单个参数
    删除操作使用的API是sqlSession.delete("命名空间.id",Object);

    MyBatis的核心配置文件概述

    MyBatis核心配置文件层级关系

    MyBatis常用配置解析

    1.environments标签
    数据库环境的配置,支持多环境配置

    其中,事务管理器(transactionManager)类型有两种:
    ①JDBC:这个配置就是直接使用了JDBC的提交和回滚设置,它依赖于从数据源得到的连接来管理事务作用域。
    ②MANAGED:这个配置几乎没做什么。它从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如JEE应用服务器的上下文)。默认情况下它会关闭连接,然而一些容器并不希望这样,因此需要将closeConnection属性设置为false来阻止它默认的关闭行为。
    其中,数据源(dataSource)类型有三种:
    ①UNPOOLED:这个数据源的实现只是每次被请求时打开和关闭连接。
    ②POOLED:这种数据源的实现利用"池"的概念将JDBC连接对象组织起来。
    ③JNDI:这个数据源的实现是为了能在如EJB或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个JNDI上下文的引用。
    2.mapper标签

    该标签的作用是加载映射的,加载方式有如下几种:
    ①使用相对于类路径的资源引用,例如:

    ②使用完全限定资源定位符(URL),例如:

    ③使用映射器接口实现类的完全限定类名,例如:

    ④将包内的映射器接口实现全部注册为映射器,例如:

    3. Properties标签

    4.typeAliases标签

    上面我们是自定义的别名,mybatis框架已经为我们设置好的一些常用的类型的别名

    Mybatis相应API

    ①SqlSession工厂构建器SqlSessionFactoryBuilder
    常用API: SqISessionFactory build(InputStream inputStream)
    通过加载mybatis的核心文件的输入流的形式构建一个SqlSessionFactory对象

    其中,Resources 工具类,这个类在 org.apache.ibatis.io包中。Resources类帮助你从类路径下、文件系统或一个web URL 中加载资源文件。

    ②SqlSession工厂对象SqlSessionFactory

    SqlSessionFactory有多个个方法创建SqlSession实例。常用的有如下两个:

    ③SqlSession会话对象

    SqISession实例在MyBatis中是非常强大的一个类。在这里你会看到所有执行语句、提交或回滚事务和获取映射器实例的方法。执行语句的方法主要有:

    操作事务的方法主要有:
    ①void commit()

    ②void rollback()

    看完了这篇文章,相信你对"Java中Mybatis框架增删查改与核心配置的示例分析"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

    数据 对象 文件 配置 实体 语句 核心 资源 事务 标签 代码 参数 工厂 数据库 数据源 问题 框架 原始 属性 方法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网为科技 安徽鑫晟辉互联网科技 天津摩尔互联网科技 广州凡科互联网科技 互联网高科技股票 互联网公司会议桌创意科技软装饰 互联网科技公司需要的职位 济南华为互联网科技产业总部基地 阿里互联网科技公司 金融科技与互联网金融相同和不同 互联网科技革命什么开始 青岛科技大学互联网大赛研究生 四川慕妮娅互联网科技有限公司 半导体是互联网高科技吗 昆明中奇联合互联网科技 中国新注册互联网科技 上海万顺科技互联网有限公司招聘 银川新华互联网科技学校原画 北京军民互联网科技公司 安徽九吞吴互联网科技有限公司 重庆互联网络科技 易互联网科技有限公司 狮子座互联网科技培训 上海卓越科技 互联网 佰商互联网科技有限公司 顺网科技2021年互联网排名 恒银科技与互联网金融 互联网企业和科技型企业 崇明区互联网教育科技售后服务 小米互联网科技园入驻
    0