2022-09-17~~09-19------Mybatis

news/2024/12/30 2:42:51/

目录

一、SSM---->SpringMVC + Spring + Mybatis

二、Mybatis 基础了解

1、历史

2、作用

3、持久化

4、持久层

5、优缺点

三、XML配置文件

1、约束

2、主配置文件xml

四、 另外一个mapper.xml

五、测试类

一、SSM---->SpringMVC + Spring + Mybatis

3SpringMVC:充当的就是Servlet的角色。可以理解为SpringMVC是Spring的WEB支持。

1Mybatis:充当的就是Dao层。

2Spring:充当的时一个润滑油的角色。

MybatisPlus:国内的团队,baomidou,可以写SQL,也可以不写SQL。介于Mybatis和Hibernate之间。

Hibernate:充当Dao层。不需要写SQL,自动生成并执行SQL语句。

二、Mybatis 基础了解

1、历史

  • Mybatis是apache的一个开源项目IBatis,2010年,apache迁移给了Google code,改名Mybatis,2013年迁移到GitHub。

  • Mybatis3,IBatis1,IBatis2。

2、作用

  • 是一款优秀的持久层框架,支持定制化的SQL、存储过程以及高级映射。

  • 之前我们学过的所有的JDBC代码和手动设置参数获取结果集,都不用写了。

  • 使用简单的XML配置文件或者注解来映射原生信息,更加的方便。

3、持久化

持久化把数据存储在磁盘而不是内存。

(1)程序产生的数据首先都是在内存

(2)内存不可靠,我们需要通过一些技术把数据永久存储在硬盘上。

4、持久层

之前的dao层,之前我们通过反射,通过泛型,通用的dao,我们在操作不同的表或者逻辑的时候,我们之前会创建一个接口,再创建接口的实现类,实际上这个dao层,就叫持久层

5、优缺点

  • sql语句与代码分离,存放于xml文件中。(最牛逼的特点)

    • 优点:便于维护管理,不用在java代码中找sql语句。

    • 缺点:不能通过打断点的方式调试。通过日志来解决这个问题。

  • 动态SQL语句。(最牛逼的特点)

    • 优点:通过逻辑标签代替编写逻辑代码,生成不同的SQL。

    • 缺点:拼接复杂的SQL语句时,没有直接拼接直观。

  • 查询结果和java对象自动映射

    • 优点:保证名称之间的对应关系。可以下划线和驼峰自动转换。

    • 缺点:对开发人员的SQL语句依赖很强。

三、XML配置文件

1、约束

保证我们的xml能够使用哪些标签,保证xml的有效性。

2、主配置文件xml

<?xml version="1.0" encoding="utf-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- environments:环境们配置数据库连接相关。可以配置多个数据库连接--><environments default="development"><environment id="development"><!--  事务管理  --><transactionManager type="JDBC"></transactionManager><!-- 数据源配置 --><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://127.0.0.1/ssm?useUnicode=true&amp;characterEncoding=utf-8"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments>
</configuration>

四、 另外一个mapper.xml

第一次使用Mybatis,需要两个文件。

  • 一个接口类mapper(就是咱们之前写的dao)Java文件,不需要我们写实现类

  • 一个接口对应着一个xml文件

  • 两个文件的名字最好相同,UserMapper.java->UserMapper.xml

  • 框架会根据mapper和xml联合,通过代理模式创建实现类。

一般情况下,我们管接口对应的xml文件叫做映射文件。

<?xml version="1.0" encoding="utf-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace:对应的mapper接口的全类名 -->
<mapper namespace="com.jsoft.dao.UserMapper"><!--  写sql语句  -->
<!--id:mapper接口中的方法名resultType:方法的返回值类型,如果是entity类型,需要写全类名parameterType:方法的入参的类型,可以省略#{id}:代表方法的入参,类似于之前的?占位符,Mybatis底层使用的是什么?PreparedStatement--><select id="selectUserById" resultType="com.jsoft.entity.User">select id,username,password from user where id = #{id}</select></mapper>

映射文件最终要交给mybatis去处理,所有的映射文件需要在主配置文件中进行注册。

<?xml version="1.0" encoding="utf-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- environments:环境们配置数据库连接相关。可以配置多个数据库连接--><environments default="development"><environment id="development"><!--  事务管理    --><transactionManager type="JDBC"></transactionManager><!-- 数据源配置 --><dataSource type="POOLED"><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://127.0.0.1/ssm?useUnicode=true&amp;characterEncoding=utf-8"/><property name="username" value="root"/><property name="password" value="root"/></dataSource></environment></environments><!-- 注册各个映射文件   --><mappers><mapper resource="mapper/UserMapper.xml"></mapper></mappers></configuration>

五、测试类

package com.jsoft.test;import com.jsoft.dao.UserMapper;
import com.jsoft.entity.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;import java.io.InputStream;// 测试我们的UserMapper
public class UserMapperTest {@Testpublic void testSelectUserById() {// 构建一个session工厂// 需要加载mybatis的主配置文件InputStream inputStream = UserMapperTest.class.getClassLoader().getResourceAsStream("mybatis-config.xml");SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);// 获取sessionSqlSession session = sqlSessionFactory.openSession();// 获取到接口的代理实现类UserMapper mapper = session.getMapper(UserMapper.class);// 调接口里的方法User user = mapper.selectUserById(1);System.out.println(user);}
}


http://www.ppmy.cn/news/946059.html

相关文章

我的妈妈

我的妈妈今年30多岁了&#xff0c;身材又矮又胖。她有一头乌黑的长发&#xff0c;再扎起来很好看。又细又弯的眉毛&#xff0c;大大的眼睛&#xff0c;高高的鼻梁下有一张不大不小的嘴巴&#xff0c;它们搭配在一起挺好看。特别是她那双眼睛真会变化呀&#xff01;当我考试考好…

Mybatis-9.28

Mybatis-9.28 环境&#xff1a; JDK1.8Mysql 5.7maven 3.6.1IDEA 回顾&#xff1a; JDBCMysqlJava基础MavenJunit SSM框架&#xff1a;配置文件的最好的学习方式&#xff1a;看官网文档&#xff1b; 1、简介 1.1、什么是Mybatis MyBatis 是一款优秀的持久层框架它支持自…

Android学习之高德地图的通用功能开发步骤(二)

周一又来了&#xff0c;我就接着上次的开发步骤&#xff08;一&#xff09;来吧&#xff0c;继续把高德地图的相关简单功能分享一下 上次写到了第六步&#xff0c;接着写第七步吧。 第七步&#xff1a;定位 地图选点 路径规划 实时导航 以下是我的这个功能NaviMapActivity的…

HTML5 Canvas API制作一个简单的猜字单机游戏

这篇文章主要介绍了借助HTML5 Canvas API制作一个简单的猜字单机游戏的实例分享,游戏中每局会自动生成一个字母,玩家按键盘来猜测该字母是哪一个,需要的朋友可以参考下 HTML代码 <!doctype html> <html lang"en"> <head> <met…

低版本5.7mysql使用dense_rank() over..窗口函数的办法

首先执行select version();可以看到数据库的mysql版本为5.7.22-log 在使用 dense_rank() over()、rank() over()、row_num() over() 三个函数时&#xff0c; SQL错误(1064) : You have an error in your sQLsyntax; check the manual that corresponds toyour MySQL server ver…

matlab多核,MATLAB多核循环并行

Mathwoks在Matlab R2007a版本的Parallel Computing Toolbox(并行计算工具箱)中加入了并行循环parfor-loops&#xff0c;对于每一步可以独立于其他步的循环&#xff0c;计算效率可以有较大幅度的提高。以前简单的for循环for-loop是顺序的(sequentially)执行每一步循环体(stateme…

【AutoSAR】【多核】通信机制

目录 前言: 一、RPC(Remote Procee Call) 二 、Satellite机制 三、Proxy机制 前言: 多核应用软件架构,如下图:

Zynq 器件搭建多核系统

Zynq系列器件提供双核Cortex-A9 ARM硬核&#xff0c;同时PL还支持MB软核&#xff0c;现在就掰一掰这三核共存怎么用。 1 多核框架 多核框架如图1所示&#xff0c;PL内使用MicroBlaze软核&#xff0c;PS内为ARM双硬核&#xff0c;通用外设控制器、DDR挂在PS上&#xff0c;PL和P…