【Java从0到架构师,Java传智播客视频

    • 依赖

    • 配置文件

    • 创建 Session

  • MyBatis 查询

    • 实体映射

    • 字段映射 - resultMap

    • 传参 - 单个参数

    • 传参 - 多个参数

    • 打印 SQL 语句

    • 多表关联查询 - resultType

Java 从 0 到架构师目录:【Java从0到架构师】学习记录

Gitee 代码:https://gitee.com/szluyu99/mj_java_frame/tree/master/01_MyBatis

MyBatis 属于持久层(DAO 层)的框架

数据库事务 (Database Transaction)

===============================================================================================

数据库事务,简称事务。什么是事务?

  • 如果将 N 个数据库操作放到了同一个事务中,那么这 N 个操作最终要么全都生效,要么全都不生效

事务的使用:

  • 开启事务:START TRANSACTION

  • 回滚事务:ROLLBACK

    只要事务中的一个操作失败,那么其他所有操作都需要回滚 (rollback),回到开启事务之前的状态

  • 提交事务:COMMIT

    如果事务中的所有操作都成功了,就提交事务,让这些操作真正生效

事务的四大特性(ACID):

  • 原子性 (Atomicity)

    事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行

  • 一致性 (Consistency)

    事务应确保数据库的状态从一个一致状态转变为另一个一致状态

    一致状态的含义是数据库中的数据应满足完整性约束

  • 隔离性 (Isolation)

    多个事务并发执行时,一个事务的执行不应影响其他事务的执行

  • 持久性 (Durability)

    已被提交的事务对数据库的修改应该永久保存在数据库中


在 JDBC 中,使用 Connection 对象来管理事务:

  • setAutoCommit(false):开启事务

  • rollback():回滚事务

  • commit():提交事务

MyBatis 使用准备

===============================================================================

依赖


添加依赖(需要添加数据库的依赖,比如 MySQL 的数据库驱动包)


<dependency>

	<groupId>org.mybatis</groupId>

	<artifactId>mybatis</artifactId>

	<version>3.5.5</version>

</dependency>

<dependency>

	<groupId>mysql</groupId>

	<artifactId>mysql-connector-java</artifactId>

	<version>5.1.49</version>

</dependency> 

配置文件


创建核心配置文件,一般叫 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>

	<environments default="development">

		<!-- 开发环境(调试阶段) -->

		<environment id="development">

			<!-- 采用JDBC的事务管理方法 -->

			<transactionManager type="JDBC" />

			<!-- POOLED代表采取连接池的方式管理连接 -->

			<dataSource type="POOLED">

				<property name="driver" value="com.mysql.jdbc.Driver"/>

				<property name="url" value="jdbc:mysql://localhost:3306/test_mybatis"/>

				<property name="username" value="root"/>

				<property name="password" value="root"/>

			</dataSource>

		</environment>

	</environments>

</configuration> 

创建 Session



Reader reader  = Resources.getResourceAsReader("mybatis-config.xml");



SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);



try (SqlSession session = factory.openSession()) {

	System.out.println(session.getConnection());

} 

MyBatis 查询

=============================================================================

实体映射


新建实体映射的配置文件(可以放在 mappers 文件夹下,比如 mappers/skill.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">

<mapper namespace="skill">

    <select id="list" resultType="com.mj.bean.Skill">

        SELECT * FROM skill

    </select>

</mapper> 

定义好实体映射的配置文件后,需要在 mybatis-config.xml 配置文件中添加实体映射文件的路径


<mappers>

	<mapper resource="mappers/skillxml" />

</mappers> 

通过 mapper 的 namespace、select 的 id 执行 SQL语句:示例代码


// 执行SQL语句

List<Skill> skills = session.selectList("skill.list"); 

字段映射 - resultMap


示例代码

使用 resultMap 可以解决多表联查时的别名问题


<resultMap id="rmSkill" type="com.mj.bean.Skill">

    <id property="id" column="id" />

    <result property="id" column="id" />

    <result property="createdTime" column="created_time" />

    <result property="name" column="name" />

    <result property="level" column="level" />

</resultMap> 

也可以在查询时直接设置别名来解决该问题:


<select id="list" resultType="java.util.LinkedHashMap">



# **最后**

**再免费分享一波我的[JAVA架构专题面试真题+解析+JAVA学习书籍:戳这里免费领取](https://gitee.com/vip204888/java-p7)**

![image.png](https://img-blog.csdnimg.cn/img_convert/5bd53a11f27005d94af64c494867e200.png)

lt property="name" column="name" />

    <result property="level" column="level" />

</resultMap> 

也可以在查询时直接设置别名来解决该问题:


<select id="list" resultType="java.util.LinkedHashMap">



# **最后**

**再免费分享一波我的[JAVA架构专题面试真题+解析+JAVA学习书籍:戳这里免费领取](https://gitee.com/vip204888/java-p7)**

[外链图片转存中...(img-4H6RqFW6-1628597184525)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值