千家信息网

ssm框架中MyBatis怎么用

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,这篇文章给大家分享的是有关ssm框架中MyBatis怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。MyBatis介绍1, MyBatis 是支持定制化 SQL、存储过
千家信息网最后更新 2025年01月23日ssm框架中MyBatis怎么用

这篇文章给大家分享的是有关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 findCommitList(Integer commit_id) throws Exception;}

mapper.xml

        

名词解释

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

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

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

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

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

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

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

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

0