Mybatis入门

mybatis是什么,有什么特点Mybatis是面向sql的持久层框架,他封装了jdbc访问数据库的过程,我们开发,只需专注于sql语句本身的拼装,其它复杂的过程全部可以交给mybatis去完成。它是一款半自动的ORM持久层框架,具有较高的SQL灵活性,支持高级映射(一对一,一对多),动态SQL,延迟加载和缓存等特性,但它的数据库无关性较低什么是ORM?Object Relation Mapping,对象关系映射。对象指的是Java对象,关系指的是数据库中的关系模型,对象关系映射,指的就是在Java
摘要由CSDN通过智能技术生成

mybatis是什么,有什么特点

Mybatis是面向sql的持久层框架,他封装了jdbc访问数据库的过程,我们开发,只需专注于sql语句本身的拼装,其它复杂的过程全部可以交给mybatis去完成。
它是一款半自动的ORM持久层框架,具有较高的SQL灵活性,支持高级映射(一对一,一对多),动态SQL,延迟加载和缓存等特性,但它的数据库无关性较低
什么是ORM?

Object Relation Mapping,对象关系映射。对象指的是Java对象,关系指的是数据库中的关系模型,对象关系映射,指的就是在Java对象和数据库的关系模型之间建立一种对应关系,比如用一个Java的Student类,去对应数据库中的一张student表,类中的属性和表中的列一一对应。Student类就对应student表,一个Student对象就对应student表中的一行数据

为什么mybatis是半自动的ORM框架?

用mybatis进行开发,需要手动编写SQL语句。而全自动的ORM框架,如hibernate,则不需要编写SQL语句。用hibernate开发,只需要定义好ORM映射关系,就可以直接进行CRUD操作了。由于mybatis需要手写SQL语句,所以它有较高的灵活性,可以根据需要,自由地对SQL进行定制,也因为要手写SQL,当要切换数据库时,SQL语句可能就要重写,因为不同的数据库有不同的方言(Dialect),所以mybatis的数据库无关性低。虽然mybatis需要手写SQL,但相比JDBC,它提供了输入映射和输出映射,可以很方便地进行SQL参数设置,以及结果集封装。并且还提供了关联查询和动态SQL等功能,极大地提升了开发的效率。并且它的学习成本也比hibernate低很多

jdbc访问数据库的过程

1.加载数据库驱动
2.创建数据库连接
3.创建statement
4.设置sql语句
5.设置查询参数
6.执行查询,得到ResultSet
7.解析结果集ResultSet
8.释放资源
代码略

jdbc存在的问题

1.频繁创建和打开、关闭数据连接,太消耗资源
2.Sql语句存在硬编码,不利于维护
3.Sql参数设置硬编码,不利于维护
4.结果集获取与遍历复杂,存在硬编码,不利于维护,期望能够查询后返回一个java对象

mybatis入门案例

需求列表:

根据用户ID查询用户信息
根据用户名查找用户列表
添加用户
修改用户
删除用户

1.工程搭建:

1.导入依赖jar包
2.配置SqlMapConfig.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>
<!-- 别名的定义 -->
	<typeAliases>
		<!-- 定义单个别名 -->
		<!--<typeAlias alias="user" type="com.cao.mybatis.pojo.User"/> -->
		
		<!-- 定义别名:包描述,别名就是类的全称不区分大小写 -->
		 <package name="com.cao.mybatis.pojo"/>
	</typeAliases>
	<!-- 和spring整合后 environments配置将废除 -->
	<environments default="development">
		<environment id="development">
			<!-- 使用jdbc事务管理 -->
			<transactionManager type="JDBC" />
			<!-- 数据库连接池 -->
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url"
					value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" />
				<property name="username" value="root" />
				<property name="password" value="123456" />
			</dataSource>
		</environment>
	</environments>
</configuration>

3.配置log4j.properties

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

4.编写pojo(提供get.set方法)

package com.cao.mybatis.pojo;

import java.util.Date;

public class User {
   
	private int id;
	private String username;// 用户姓名
	private String sex;// 性别
	private Date birthday;// 生日
	private String address;// 地址
	public int getId() {
   
		return id;
	}
	public void setId(int id) {
   
		this.id = id;
	}
	public String getUsername() {
   
		return username;
	}
	public void setUsername(String username) {
   
		this.username = username;
	}
	public String getSex() {
   
		return sex;
	}
	public void setSex(String sex) {
   
		this.sex = sex;
	}
	public Date getBirthday() {
   
		return birthday;
	}
	public void setBirthday(Date birthday) {
   
		this.birthday = birthday;
	}
	public String getAddress() {
   
		return address;
	}
	public void setAddress(String address) {
   
		this.address = address;
	}
	
	
	
	
}

5.配置sql查询的映射文件

	<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="user">

	
    

</mapper>
	

6.加载映射文件,在SqlMapConfig.xml配置mappers节点

2. 完成需求

2.2 根据用户ID查询用户信息

2.1 需求完成步骤

1.编写sql语句
在这里插入图片描述

2.配置user映射文件

<!-- id:statementId
		 resultType:查询结果集的数据类型
		 parameterType:查询的入参
	-->
	<select id="getUserById" parameterType="int" resultType="com.cao.mybatis.pojo.User" >
		SELECT * FROM USER WHERE id = #{
   id1}
	</select>

3.编写测试程序

@Test
	public void testGetUserByid() throws IOException {
   
		// 创建SqlSessionFactoryBuilder对象
		SqlSessionFactoryBuilder sfb = new SqlSessionFactoryBuilder();
		// 查找配置文件创建输入流
		InputStream inputStream = Resources.getResourceAsStream("
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CANDH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值