Mybatis初学者总结(基础)

0.Mybatis总结

1. ORM

对象关系映射 mapping

将数据库中的表映射为Java中的类;表中的一行数据映射为一个对象;每一列映射为类中的一个属性。

2. 准备工作

  1. 所需 jar 包:核心jar包 mybatis-3.3.0.jar ojdbc14.jar
    可选的包 junit-4.7.jar log4j-1.2.17.jar
  2. 书写配置文件 ( mybatis-config.xml :数据库连接信息 别名 映射文件位置 等。。。放在 src 下)。
  3. 映射文件 ( XXXMapper.xml :需要书写的sql语句 内部需要给每个sql语句设置id 放在指定 package 下)。
  4. 映射接口 (与映射文件对应,名字一般与映射文件相同,接口中方法的名字和映射文件中的 id 名相同)。
  5. 构建 SqlSession 对象,用此对象创建映射接口的实现类以及实现类对象。
  6. 用实现类对象调用方法执行 sql 语句。
  7. 关闭资源 ,提交or回滚事务。

3. 操作步骤

3.1 第一步

在SQLMapper映射配置文件中配置SQL语句,假定为StudentMapper.xml

<insert id="insertStudent" parameterType="Student"> 
INSERT INTO STUDENTS(ID,NAME,EMAIL) 
VALUES(#{id},#{name},#{email}) 
</insert> 
3.2 第二步

创建一个StudentMapper接口

public interface StudentMapper{
    
void insertStudent(Student student); 
} 
3.3 第三步

编写java代码完成插入操作:

SqlSession session = getSqlSessionFactory().openSession(); 

StudentMapper mapper = session.getMapper(StudentMapper.class); 

mapper.insertStudent(student); 

4. 关系图

在这里插入图片描述

5. mybatis配置详解

5.1 DTD中规定的标签顺序:

<(properties?, settings?, typeAliases?, typeHandlers?, objectFactory?, objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?, mappers?)>

构建SqlSessionFactory最常见的方式是基于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>
	<properties resource="application.properties">
		<property name="username" value="db_user" />
		<property name="password" value="verysecurepwd" />
	</properties>
	<settings>
		<setting name="cacheEnabled" value="true" />
	</settings>
	<typeAliases>
		<typeAlias alias="Student" type="com.briup.pojo.Student" />
		<package name="com.briup.pojo" />
	</typeAliases>
	<typeHandlers>
		<typeHandler
			handler="com.mybatis3.typehandlers.PhoneTypeHandler" />
		<package name="com.briup.typehandlers" />
	</typeHandlers>
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driverClassName}" />
				<property name="url" value="${jdbc.url}" />
				<property name="username" value="${jdbc.username}" />
				<property name="password" value="${jdbc.password}" />
			</dataSource>
		</environment>
		<environment id="production">
			<transactionManager type="MANAGED" />
			<dataSource type="JNDI">
				<property name="data_source"
					value="java:comp/jdbc/MyBatisDemoDS" />
			</dataSource>
		</environment>
		<environment id="reports">
			<transaction Managertype="MANAGED" />
			<dataSource type="JNDI">
				<property name="data_source"
					value="java:comp/jdbc/ReportsDS" />
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<mapper resource="com/briup/mappers/StudentMapper.xml" />
		<mapper url="file:///D:/mybatisdemo/mappers/StudentMapper.xml" />
		<mapper class="com.briup.mappers.StudentMapper" />
	</mappers>
</configuration> 
5.2 environments元素

​ ents是配置mybatis当前工作的数据库环境的地方。如果系统在运行期间如果有切换数据库环境的需求,可以设置多个environment标签将每个数据库配置成独立的环境,并且为每一个数据库创建一个SqlSessionFactory。可以通过将默认environments值设置成想要的environment的id值。

例如:

<environments default="shoppingcart">
	<environment id="shoppingcart">
		<transactionManager type="MANAGED" />
		<dataSource type="JNDI">
			<property name="data_source"
				value="java:comp/jdbc/ShoppingcartDS" />
		</dataSource>
	</environment>
	<environment id="reports">
		<transaction Managertype="MANAGED" />
		<dataSource type="JNDI">
			<property name="data_source"
				value="java:comp/jdbc/ReportsDS" />
		</dataSource>
	</environment>
</environments>

我们可以为以上每个环境创建一个SqlSessionFactory

	//输入流读取
	inputStream = Resources.getResourceAsStream("mybatis-config.xml"); 
	//默认的环境
	defaultSqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

	//统计明细的环境
	cartSqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream, "shoppingcart"); 

	//统计报表的环境
	reportSqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream, "reports");
5.2.1 dataSource元素

属于environment标签,表示的是数据源:至少会包括该连接数据库的各种信息。dataSource的类型type属性可以配置成其内置类型之一,如UNPOOLED,POOLED,JNDI。

  • UNPOOLED :MyBatis会为每一个数据库操作创建一个新的连接,使用完了并关闭它,该方式适用于只有小规模数量并发用户的简单应用程序上。

  • POOLED:MyBatis会创建一个数据库连接池,连接池中的一个连接将会被用作数据库操作。一旦数据库操作完成,MyBatis会将此连接返回给连接池。在开发或测试环境中,经常使用此种方式。

  • JNDI (Java Naming and Directory Interface , Java命名和目录接口, 是一种标准的Java命名系统接口)

    可对连接数据库的各种信息进行提前配置(隐藏),MyBatis可以从配置好的JNDI数据源dataSource获取数据库连接。在生产环境中,优先考虑这种方式。

    例如:

    		<dataSource type="JNDI">
    			<property name="data_source"
    				value="java:comp/jdbc/ShoppingcartDS" />
    		</dataSource>
    
5.2.2 transactionManager元素

属于environment标签,即事务管理器 :表示对事务的管理

MyBatis支持两种类型的事务管理器:JDBC 和 MANAGED 。

  • JDBC:手动管理事务
  • MANAGED:自动管理事务
5.3 properties元素

对配置值进行封装到XXX.properties文件中,便于修改

  • dtd约束中必须写在的开头
  • applications.properties 文件中的值优先级更高!

例如:

注:以字符串读取,莫要多打空格

//文件名为application.properties
driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@127.0.0.1:1521:XE
		<!-- 读取application.properties文件中的数据key-value的形式 -->
		<properties resource="application.properties">
		  <!-- 注意:是applications.properties文件中的值优先级高 -->
		  <property name="jdbc.username" value="briup" /> 
		  <property name
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java面试资源概览 一、内容概览 本次分享的资源涵盖了Java面试的各个方面,从基础知识到高级技术,从数据库到框架应用,都做了深入的探讨和总结。具体内容包括: Java基础知识点:包括数据类型、面向对象特性、异常处理、集合框架等。 Java核心技术:如多线程、网络编程、序列化等都有详细的解释和示例。 常用框架:如Spring、MyBatis等框架的使用方法和内部原理都有涉及。 数据库相关:包括关系型数据库和非关系型数据库的使用,以及JDBCMyBatis等与数据库交互的技术。 实战项目经验:分享了几个经典的Java项目,解析了项目的架构设计和核心技术点。 面试经验和技巧:整理了常见的Java面试问题,并给出了答题建议和技巧。 代码和项目实例:提供了多个Java项目的源代码,方便学习者参考和实践。 学习笔记和心得:记录了学习过程中的重点难点和心得体会,有助于学习者更好地理解和掌握知识。 二、适用人群 本资源适用于即将毕业或已经毕业,希望通过学习Java找到一份理想工作的同学。无论你是初学者还是有一定基础的开发者,都能从中获得启发和帮助。 三、使用建议 系统学习:建议学习者按照资源提供的顺序和内容,系统地学习和掌握Java的知识点。 实践为王:理论知识和实战经验相结合,通过实践来加深理解和记忆。 持续更新:由于Java技术和面试要求都在不断更新,建议学习者保持关注,随时更新自己的知识和技能。 交流与讨论:与同学或同行进行交流和讨论,分享学习心得和经验,共同进步。Java面试资源概览 一、内容概览 本次分享的资源涵盖了Java面试的各个方面,从基础知识到高级技术,从数据库到框架应用,都做了深入的探讨和总结。具体内容包括: Java基础知识点:包括数据类型、面向对象特性、异常处理、集合框架等。 Java核心技术:如多线程、网络编程、序列化等都有详细的解释和示例。 常用框架:如Spring、MyBatis等框架的使用方法和内部原理都有涉及。 数据库相关:包括关系型数据库和非关系型数据库的使用,以及JDBCMyBatis等与数据库交互的技术。 实战项目经验:分享了几个经典的Java项目,解析了项目的架构设计和核心技术点。 面试经验和技巧:整理了常见的Java面试问题,并给出了答题建议和技巧。 代码和项目实例:提供了多个Java项目的源代码,方便学习者参考和实践。 学习笔记和心得:记录了学习过程中的重点难点和心得体会,有助于学习者更好地理解和掌握知识。 二、适用人群 本资源适用于即将毕业或已经毕业,希望通过学习Java找到一份理想工作的同学。无论你是初学者还是有一定基础的开发者,都能从中获得启发和帮助。 三、使用建议 系统学习:建议学习者按照资源提供的顺序和内容,系统地学习和掌握Java的知识点。 实践为王:理论知识和实战经验相结合,通过实践来加深理解和记忆。 持续更新:由于Java技术和面试要求都在不断更新,建议学习者保持关注,随时更新自己的知识和技能。 交流与讨论:与同学或同行进行交流和讨论,分享学习心得和经验,共同进步。Java面试资源概览 一、内容概览 本次分享的资源涵盖了Java面试的各个方面,从基础知识到高级技术,从数据库到框架应用,都做了深入的探讨和总结。具体内容包括: Java基础知识点:包括数据类型、面向对象特性、异常处理、集合框架等。 Java核心技术:如多线程、网络编程、序列化等都有详细的解释和示例。 常用框架:如Spring、MyBatis等框架的使用方法和内部原理都有涉及。 数据库相关:包括关系型数据库和非关系型数据库的使用,以及JDBCMyBatis等与数据库交互的技术。 实战项目经验:分享了几个经典的Java项目,解析了项目的架构设计和核心技术点。 面试经验和技巧:整理了常见的Java面试问题,并给出了答题建议和技巧。 代码和项目实例:提供了多个Java项目的源代码,方便学习者参考和实践。 学习笔记和心得:记录了学习过程中的重点难点和心得体会,有助于学习者更好地理解和掌握知识。 二、适用人群 本资源适用于即将毕业或已经毕业,希望通过学习Java找到一份理想工作的同学。无论你是初学者还是有一定基础的开发者,都能从中获得启发和帮助。 三、使用建议 系统学习:建议学习者按照资源提供的顺序和内容,系统地学习和掌握Java的知识点。 实践为王:理论知识和实战经验相结合,通过实践来加深理解和记忆。 持续更新:由于Java技术和面试要求都在不断更新,建议学习者保持关注,随时更新自己的知识和技能。 交流与讨论:与同学或同行进行交流和讨论,分享学习心得和经验,共同进步。
Java面试资源概览 一、内容概览 本次分享的资源涵盖了Java面试的各个方面,从基础知识到高级技术,从数据库到框架应用,都做了深入的探讨和总结。具体内容包括: Java基础知识点:包括数据类型、面向对象特性、异常处理、集合框架等。 Java核心技术:如多线程、网络编程、序列化等都有详细的解释和示例。 常用框架:如Spring、MyBatis等框架的使用方法和内部原理都有涉及。 数据库相关:包括关系型数据库和非关系型数据库的使用,以及JDBCMyBatis等与数据库交互的技术。 实战项目经验:分享了几个经典的Java项目,解析了项目的架构设计和核心技术点。 面试经验和技巧:整理了常见的Java面试问题,并给出了答题建议和技巧。 代码和项目实例:提供了多个Java项目的源代码,方便学习者参考和实践。 学习笔记和心得:记录了学习过程中的重点难点和心得体会,有助于学习者更好地理解和掌握知识。 二、适用人群 本资源适用于即将毕业或已经毕业,希望通过学习Java找到一份理想工作的同学。无论你是初学者还是有一定基础的开发者,都能从中获得启发和帮助。 三、使用建议 系统学习:建议学习者按照资源提供的顺序和内容,系统地学习和掌握Java的知识点。 实践为王:理论知识和实战经验相结合,通过实践来加深理解和记忆。 持续更新:由于Java技术和面试要求都在不断更新,建议学习者保持关注,随时更新自己的知识和技能。 交流与讨论:与同学或同行进行交流和讨论,分享学习心得和经验,共同进步。Java面试资源概览 一、内容概览 本次分享的资源涵盖了Java面试的各个方面,从基础知识到高级技术,从数据库到框架应用,都做了深入的探讨和总结。具体内容包括: Java基础知识点:包括数据类型、面向对象特性、异常处理、集合框架等。 Java核心技术:如多线程、网络编程、序列化等都有详细的解释和示例。 常用框架:如Spring、MyBatis等框架的使用方法和内部原理都有涉及。 数据库相关:包括关系型数据库和非关系型数据库的使用,以及JDBCMyBatis等与数据库交互的技术。 实战项目经验:分享了几个经典的Java项目,解析了项目的架构设计和核心技术点。 面试经验和技巧:整理了常见的Java面试问题,并给出了答题建议和技巧。 代码和项目实例:提供了多个Java项目的源代码,方便学习者参考和实践。 学习笔记和心得:记录了学习过程中的重点难点和心得体会,有助于学习者更好地理解和掌握知识。 二、适用人群 本资源适用于即将毕业或已经毕业,希望通过学习Java找到一份理想工作的同学。无论你是初学者还是有一定基础的开发者,都能从中获得启发和帮助。 三、使用建议 系统学习:建议学习者按照资源提供的顺序和内容,系统地学习和掌握Java的知识点。 实践为王:理论知识和实战经验相结合,通过实践来加深理解和记忆。 持续更新:由于Java技术和面试要求都在不断更新,建议学习者保持关注,随时更新自己的知识和技能。 交流与讨论:与同学或同行进行交流和讨论,分享学习心得和经验,共同进步。Java面试资源概览 一、内容概览 本次分享的资源涵盖了Java面试的各个方面,从基础知识到高级技术,从数据库到框架应用,都做了深入的探讨和总结。具体内容包括: Java基础知识点:包括数据类型、面向对象特性、异常处理、集合框架等。 Java核心技术:如多线程、网络编程、序列化等都有详细的解释和示例。 常用框架:如Spring、MyBatis等框架的使用方法和内部原理都有涉及。 数据库相关:包括关系型数据库和非关系型数据库的使用,以及JDBCMyBatis等与数据库交互的技术。 实战项目经验:分享了几个经典的Java项目,解析了项目的架构设计和核心技术点。 面试经验和技巧:整理了常见的Java面试问题,并给出了答题建议和技巧。 代码和项目实例:提供了多个Java项目的源代码,方便学习者参考和实践。 学习笔记和心得:记录了学习过程中的重点难点和心得体会,有助于学习者更好地理解和掌握知识。 二、适用人群 本资源适用于即将毕业或已经毕业,希望通过学习Java找到一份理想工作的同学。无论你是初学者还是有一定基础的开发者,都能从中获得启发和帮助。 三、使用建议 系统学习:建议学习者按照资源提供的顺序和内容,系统地学习和掌握Java的知识点。 实践为王:理论知识和实战经验相结合,通过实践来加深理解和记忆。 持续更新:由于Java技术和面试要求都在不断更新,建议学习者保持关注,随时更新自己的知识和技能。 交流与讨论:与同学或同行进行交流和讨论,分享学习心得和经验,共同进步。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值