Mybatis的简介+简单实现增删改查案例

@

目录

总结内容

1. 基本概念

  • Mybatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。

2. Mybatis的使用

需求

配置文件简介

  • 添加项目需要的jar包
    1)mysql-connection-java-5.1.26-bin.jar(jar包可以根据自己需要更换)
      MySQL数据库的JDBC驱动包,访问MySQL必须导入的jar包
    2)mybatis-3.4.5.jar(jar包可以根据自己需要更换)
      MyBatis 框架的核心jar包

  • XxxMapper.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 属性,对应的值必须是改文件所在包名 + "." + 该文件的名称(不带后缀名)
     用于区分sql的唯一性-->
<mapper namespace="com.yy.homework.mapper.TeacherMapper">

    <!-- insert 标签 id 属性,它是唯一标识符,指在当前文件中必须是唯一的
         目的:表示 sql 唯一性 -->

    <!-- 原因:在开发中,如果需要获取到数据库中自动生成的主键,可以通过mybatis来实现
         useGeneratedkeys:  表示当前文件中唯一
         keyProperty:  表示是否需要获取主键的值
         parameterType:  传入参数的类型(一般不写)-->

    <!-- #{变量} 整体是占位符,相当于 preparedStatement 中的 ?
         变量:如果传入的参数类型是简单类型(包含String),可以随便使用变量使用变量名
              如果传入的参数类型是对象类型,必须使用对象中的属性的名称 -->

<insert id="delete">
   delete from Teacher where userID = #{userID}
</insert>

<!-- resultType 设置数据的类型,高数MyBatis框架,让 MyBatis 把数据库返回的数据封装成 resultType 类型的对象
     resultMap 处理表中的列的名称和类中属性名称不一致的情况的映射关系 -->
<select id="selectAll" resultType="com.yy.domain.Teacher>
  select * from Teacher
</select>
</mapper>
  • 理解:MyBatis 的执行流程
    1)加载主配置文件(mybatis-config.xml)到内存中,将数据封装到对象(Configuration/Environment/TransactionManager/DataSource等)
    2)通过操作拿到访问数据库的基本信息,根据这些数据创建SqlSessionFactory对象
    3)从SqlSessionFactory对象中获取到SqlSession对象,然后执行SQL
    4)insert into user(name,age,salary,hiredate) values(#{name},#{age},#{salary},#{hiredate}); 被翻译成 insert into user(name,age,salary,hiredate) values(?,?,?,?);
    5)使用PreparedStatement来执行指定的SQL,从传递进来的User对象中依次获取到name/age/salary/hiredate 这些属性的值,这里需要使用到内省机制来访问对象中的属性。

总结

以上就是 jdbc 连接数据库的总结了,代码仅供参考,欢迎讨论交流。

上一篇:Oracle -- 增量同步数据_游标和merge into 方式同步


下一篇:进程相关的API函数