温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

ssm框架中MyBatis怎么用

发布时间:2021-12-30 09:49:40 来源:亿速云 阅读:204 作者:小新 栏目:大数据

这篇文章给大家分享的是有关ssm框架中MyBatis怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

MyBatis介绍

      1, MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结集。     

       2,MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的实体类映射成数据库中的记录。

MyBatis优点

       MyBatis是一个持久层的框架,它是对JDBC的封装,要学好MyBatis,首要要对JDBC有一个较深的认识,这里通过比对JDBC来对MyBatis有一个初步的认识,即我们为什么要使用MyBatis。

       使用JDBC操作数据库存在一些问题,例如代码冗余,需要写很多重复的代码,不便于维护等,MyBatis正是为解决这些痛点而诞生的。

下面对比几种典型的场景

JDBC(问题)

        1,数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响数据库性能。

        2,将sql语句硬编码到Java代码中,如果sql语句修改,需要重新编译java代码,不利于系统维护。

        3,向preparedStatement中设置参数,对占位符号位置和设置参数值,硬编码在java代码中,不利于系统维护。

        4,从resutSet中遍历结果集数据时,存在硬编码,将获取表的字段进行硬编码,不利于系统维护。

MyBatis(对策)

        1,使用数据库连接池管理数据库连接。

        2,将sql语句配置在xml配置文件中,即使sql变化,不需要对java代码进行重新编译。

        3,将sql语句及占位符号和参数全部配置在xml中。

        4,将查询的结果集,自动映射成java对象。

        对比JDBC持久化的流程,MyBatis很多工作在配置文件中进行设置,减少了很多代码量,同时也使得代码结构更加清晰,维护起来也更加方便。

JDBC的工作流程

        1,加载数据库驱动

        2,创建并获取数据库链接

        3,创建jdbc statement对象

        4,设置sql语句

        5,设置sql语句中的参数

        6,通过statement执行sql并获取结果

        7,对sql执行结果进行解析处理

        8,释放资源

MyBatis的工作流程

        1,配置mybatis的配置文件,SqlMapConfig.xml
        2,通过配置文件,加载mybatis运行环境,创建SqlSessionFactory会话工厂。
        3,通过SqlSessionFactory创建SqlSession。SqlSession是一个面向用户接口(提供操作数据库方法),实现对象是线程不安全的,建议sqlSession应用场合在方法体内。
        4,调用sqlSession的方法去操作数据。如果需要提交事务,需要执行SqlSession的commit()方法。

        5,释放资源,关闭SqlSession

MyBatis的使用(简单介绍)

        编写一个mapper接口和对应的XML文件映射,将所有的SQL语句交给XML进行管理。

        在编写mapper.xml(映射文件)和mapper.java需要遵循以下规范:

        1,mapper.xml中namespace就是mapper.java的类全路径。

        2,mapper.xml中statement的id和mapper.java中方法名一致。

        3,mapper.xml中statement的parameterType指定输入参数的类型和mapper.java的方法输入参数类型一致

        4,mapper.xml中statement的resultType指定输出结果的类型和mapper.java的方法返回值类型一致。

如下,举例一个简单的mapper的用法

mapper.java

public interface CommitMapper {    
   /**     * 新增评论     */    public void addCommit(Commit commit) throws Exception;    
   /**     * 删除评论     */    public List<Commit> findCommitList(Integer commit_id) throws Exception; }

mapper.xml

<?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.amuxia.mapper.CommitMapper">
    <select id="addCommit" parameterType="com.amuxia.pojo.Commit">
        insert into
        tb_commit
       (
       commit_content,
       commit_user_id,
       commit_goods_id
       )
       value        (
       #{commit_content},
       #{commit_user_id},
       #{commit_goods_id}
       )    </select>    <select id="findCommitList" parameterType="integer"        resultType="com.amuxia.pojo.Commit">        select        c.commit_id,
       c.commit_content        from
       tb_commit c,
       tb_user u,
       tb_goods g
       where
       c.commit_user_id=u.user_id        and c.commit_id=g.id
       and c.commit_id=#{commit_id}    </select></mapper>

       名词解释

        1,parameterType:MyBatis中通过parameterType指定输入的参数类型

        2,resultType:MyBatis中通过resultType指定输出的结果。

        3,#{}:表示的是占位符,#{}接收的参数是输入的参数,类型可以是简单类型、pojo、hashmap

        #{}如果接收的是简单类型的话,里面的值可以value或者其他名称

        #{}接收pojo对象,通过OGNL读取对象中的属性值,通过属性.属性的方式获取。

        4,selectOne:表示查询出一条记录,如果是使用selectone是可以实现的结果,selectList也是可以实现了(list中只有一个对象)

        5,selectList:表示查询出一个列表(多条记录)进行映射的。如果是使用selectOne是不可以实现的。

感谢各位的阅读!关于“ssm框架中MyBatis怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI