IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> MyBatis-3.4.2简单应用 -> 正文阅读

[Java知识库]MyBatis-3.4.2简单应用

MyBatis简介

MyBatis是一个支持普通SQL查询、存储过程以及高级映射的持久层框架。
属于ORM(对象关系映射) 框架

MyBatis与Hibernate的区别

  1. Hibernate是全表映射的框架。只需定义好持久化对象到数据库的映射关系,就可以通过Hibernate提供的方法完成持久层操作。开发效率高、多表查询效率较差
  2. Mybatis是一个半自动映射的框架。即需要手写SQL命令。开发效率低、可配置动态SQL并优化SQL

MyBatis下载地址

https://github.com/mybatis/mybatis-3/release

在这里插入图片描述

MyBatis工作原理

Created with Rapha?l 2.3.0 读取MyBatis配置文件 mybatis-config.xml 加载映射文件 Mapper1.xml ..... 构造会话工厂 SqlSessionFactory 构造会话对象 SqlSession Executor执行器
  1. 首先读取mybatis-config.xml配置文件,这里主要配置Mybatis的运行环境,即获取数据库的连接。
  2. 加载映射文件Mapper.xml,在此处写SQL语句。一张表对应一个Java类对应一个映射文件
  3. 构造会话工厂,用于产生会话SqlSession对象。
  4. 获取SqlSession对象,包含执行SQL所有的方法。
  5. MyBatis底层定义了一个Execute接口来操作数据库。根据SqlSession对象传递的参数动态的执行需要的SQL语句。

MyBatis入门程序

创建名为mybatis数据库,在该数据库下创建t_customer表,并且插入三条数据。

	create database mybatis;
	use mybatis;
	create table t_customer(
		id int(32) primary key auto_increment,
		username varchar(50),
		jobs varchar(50),
		phone varchar(16)
	);
	insert into t_customer values 
		('1','joy','doctor','17344098932'),
		('2','jack','teacher','18365075738'),
		('3','tom','worker','18355074612');

创建chapter06的Web项目,添加JAR包。

在这里插入图片描述

MyBatis默认使用log4j输出日志,需要在控制台查看执行SQL语句。在src路径下创建log4j.properties文件

在这里插入图片描述

创建持久化类customer,属性对应数据表中的字段

在这里插入图片描述

在src文件夹下创建mybatis-config.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>
	<!--配置环境,默认的环境id为mysql-->
	 <environments default="mysql">
	 	<!--id指定使用哪个环境-->
		 <environment id="mysql">
		 	<!--使用JDBC事务管理器-->
 			<transactionManager type="JDBC"/>
 			<!--数据库连接池-->
			 <dataSource type="POOLED">
				 <property name="driver" value="com.mysql.jdbc.Driver"/>
				 <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
				 <property name="username" value="root"/>
				 <property name="password" value="root"/>
			 </dataSource>
		 </environment>
	 </environments>
	<!--配置映射文件Mapper位置-->
 	<mappers>
	 <mapper resource="com/syl/mapper/CustomerMapper.xml"/>
 	</mappers>
</configuration>

查询客户

1.在com.syl.mapper包下创建CustomerMapper.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">
 	<!-- namespace表示命名空间 -->
	<mapper namespace="com.syl.mapper.CustomerMapper">
	    <!-- 根据客户编号获取信息 
	    	1. id:该SQL语句的命名
	    	2. paramerType:指定传入参数的类型
	    	3. resultType:返回结果的类型:Customer
	    	4. #{}: 表示一个占位符,相当于?。下文,表示该占位符接受参数的名称为id
	    -->
 		<select id="findCustomerById" parameterType="Integer" 
 		    resultType="com.syl.po.Customer">
 				select * from t_customer where id = #{id}
 		</select>
	</mapper>

  1. 创建com.syl.test包下MybatisTest测试类。
    在这里插入图片描述

模糊查询

模糊查询SQL语句:Select * from t_customer where username like '%${value}%'

  1. like表示像、类似。
  2. %表示一个或者多个字符
  3. ${}用于连接字符串
  1. 在Customer类的映射文件中添加如下
    在这里插入图片描述
  2. MybatisTest类添加findCustomerByName()方法
    在这里插入图片描述

添加客户

添加客户SQL语句:insert into t_customer(username,jobs,phone) values(#{username},#{job},#{phone})

  1. 在Customer类的映射文件中添加如下
    在这里插入图片描述
  2. MybatisTest类添加addCustomer()方法
    在这里插入图片描述

更新客户

更新客户SQL语句:update t_customer set username=#{username},jobs=#{jobs},phone=#{phone} where id=#{id}

  1. 在Customer类的映射文件中添加如下
    在这里插入图片描述
  2. MybatisTest类添加updateCustomer()方法
    在这里插入图片描述

删除客户

删除客户SQL语句:delete from t_customer where id=#{id}

  1. 在Customer类的映射文件中添加如下
    在这里插入图片描述
  2. MybatisTest类添加deleteCustomer()方法
    在这里插入图片描述

整理思路

  1. 首先第一步创建PO类,并且创建PO类对应的映射文件,写好需要执行的SQL语句。
<?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">
 	<!-- namespace表示命名空间 -->
	<mapper namespace="com.syl.mapper">
	    <!-- 根据客户编号获取信息 
	    	1. id:该SQL语句的命名
	    	2. paramerType:指定传入参数的类型
	    	3. resultType:返回结果的类型:Customer
	    	4. #{}: 表示一个占位符,相当于?。下文,表示该占位符接受参数的名称为id
	    -->
 		<select id="findCustomerById" parameterType="Integer" 
 		    resultType="com.syl.po.Customer">
 				select * from t_customer where id = #{id}
 		</select>
 		<!--更新客户信息-->
 		<update id="updateCustomer" paramerterType="Customer">
 			.......
 		</update>
 		<!--删除客户-->
 		<insert id="deleteCustomer" paramerterType="Integer">
 			.......
 		</insert>
 		<!--插入新客户-->
 		<insert id="insertCustomer" paramerterType="Customer">
 			.......
 		</insert>
	</mapper>
  1. 创建映射文件,配置数据库连接池、指定映射文件
<?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>
	<!--配置环境,默认的环境id为mysql-->
	 <environments default="mysql">
	 	<!--id指定使用哪个环境-->
		 <environment id="mysql">
		 	<!--使用JDBC事务管理器-->
 			<transactionManager type="JDBC"/>
 			<!--数据库连接池-->
			 <dataSource type="POOLED">
				 <property name="driver" value="com.mysql.jdbc.Driver"/>
				 <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
				 <property name="username" value="root"/>
				 <property name="password" value="root"/>
			 </dataSource>
		 </environment>
	 </environments>
	<!--配置映射文件Mapper位置-->
 	<mappers>
	 <mapper resource="com/syl/mapper/CustomerMapper.xml">
 	</mappers>
</configuration>
  1. 创建测试类,添加方法
	public class Test{
		public void foobar(){
			//获取配置文件
			InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
			//创建会话工厂并加载配置文件
			SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder.build(inputStream);
			//创建会话
			SqlSession sqlSession = sqlSessionFactory.openSession();
			//下述执行相关数据库操作
		}
	}

@syl 21/08/05 周四 23:38 晴 28°

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-06 09:29:41  更:2021-08-06 09:31:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/11 17:51:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码