MyBatis学习(一)

MyBatis

框架概述

  • 软件开发的三层架构

    • 界面层(User Interface Layer):与用户交互,接受请求,显示结果的视图层(如Servlet、JSP、HTML等)
    • 业务逻辑层(Business Logic Layer):接收界面层传递的数据,处理逻辑(Service层)
    • 数据访问层(Data Access Layer):访问数据库,执行数据库操作(DAO层)
  • 三层架构的对应框架

    • 界面层——Controller——SpringMVC
    • 业务逻辑层——Service——Spring
    • 数据层——DAO——MyBatis
      框架是一个模板,定义好了一些内容。可以直接使用这些内容的功能实现目标。框架不是全能的,一般针对于某方面使用(如MyBatis就是针对于数据库操作设计的)
  • JDBC编程的步骤

    • 注册加载驱动,加载Driver
    • 使用DriverManager获取数据库连接对象Connection
    • 使用Connection获取Statement对象,使用Statement对象执行SQL语句
    • 执行SQL语句后获得ResultSet,并将结果集转换为java对象或者集合
    • 关闭资源
      使用JDBC编程其实就是一些固定的步骤,最终有区别的地方在于SQL语句。因此使用JDBC编程会导致数据库操作流程比较繁琐复杂,开发效率低。而使用数据库连接池、DBUtils等都是将这些代码封装简化。MyBatis则是把这些操作变得更加简洁。
  • MyBatis

    • MyBatis是一个基于java持久层框架,即MyBatis SQL Mapper Framework For Java,SQL映射框架,他提供了如下功能:

      • sqlMapper:sql映射,可以将数据库表中的一行数据映射为一个java对象,操作该对象就相当于操作表中数据。
      • Data Access Objects(DAOs):数据访问,可以对数据库进行增删改查的操作
    • MyBatis可以实现的操作:

      • 创建Connection、Statement、ResultSet的对象,不需要开发人员手动创建
      • 执行sql语句
      • 可以循环sql,将结果集中的数据转化为java对象或者是java集合
      • 关闭资源

      因此在使用MyBatis框架的时候,开发人员只需要提供sql语句即可,最终效果为:

      • 开发人员提供sql语句
      • MyBatis创建资源
      • MyBatis处理sql语句
      • 得到结果集并将其转化为java对象或者java集合
    • MyBatis是一个sql映射框架,可以通过它实现操作数据库,是一个增强的JDBC

MyBatis入门

  • 创建一个maven管理的MyBatis的demo需要的步骤如下:

    • 创建一个数据库表(Student)
    • 在该maven项目的pom文件中加入mybatis和mysql的依赖
    • 创建实体类(Student),建议类中属性与表中对应字段一致
    • 创建持久层DAO接口,在其中定义一些访问数据库表的方法(如selectStudents()
    • 在对应的接口下方(同一个包内)创建该接口的sqlMapper映射文件,用于写sql语句。一般一个数据库表对应一个sql映射文件
    • 在main/resource文件夹中创建MyBatis的主配置文件。一个MyBatis项目中只有之歌主配置文件。在这个主配置文件中可以配置数据库的连接信息(dataSource)和sql映射文件的位置信息
    • 创建使用MyBatis的类,执行访问数据库的操作(即使用sqlSession执行操作)
  • sql映射文件
    sql映射文件是一个规定好格式的xml配置文件。在sql映射文件中使用<mapper><select>等标签可以为接口中的指定方法配置sql语句,格式如下。

    • namespace为命名空间,用于限定与sql映射文件对应的DAO接口,一般要求使用DAO接口的全类名来赋值
    • mapper中的id属性为sql映射的id值,也即为了标识与该sql语句相对应的接口中的方法。一般也会要求使用接口中对应方法的名称赋值
    • resultType属性表示查询语句返回结果为java对象的结果数据类型
    • 不同的标签表示告知MyBatis执行不同的数据库操作
      • <select></select>,表示执行数据库查询操作
      • <insert></insert>,表示执行数据库插入操作
      • <update></update>,表示执行数据库更新操作
      • <delete></delete>,表示执行数据库删除操作
<!-- 文件头采用固定格式,不需要记忆 -->
<?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">
<mappers namespace="com.jarvis.dao.StudentDao">
	<mapper id="selectStudents" resultType="com.jarvis.entity.Student">
		<select>
			select id , name, age from student
		</select>
	</mapper>
<mappers>
  • MyBatis的主配置文件
    在main/resources文件夹下创建mybatis.xml的文件,这就是mybatis的主频日志文件。在主配置文件中可以配置数据库的连接信息、sql映射文件的位置信息以及定义别名、配置日志等其他操作
    • <environments>标签用于配置使用的数据库连接环境,default属性必须为任一子标签<environment>的id属性值
    • <transactionManager>标签用于配置使用的事务管理模式,JDBC表示MyBatis采用与JDBC一致的事务管理方法,特别要注意的是需要手动提交事务。而MANAGED表示将事务交给容器来管理(如使用Spring来管理)
    • <mapper>标签用于设置sql映射文件的位置。这个位置为从类路径开始的路径信息(即java下的路径信息)
<!-- 文件头为固定格式,无需记忆 -->
<?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="mysql">
		<environment id="mysql">
			<transactionManager type="JDBC">
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
                <property name="url" value="jdbc:mysql:///mybatis"/>
			</dataSource>
		<environment>
	<environments>
	<mappers>
		<mapper resource="com/jarvis/dao/studentDao.xml"></mapper>
	</mappers>
</configuration>
  • 使用sqlSession来执行sql语句
    sqlSession是MyBatis提供的执行数据库操作的对象,可以通过以下步骤获得:

    • 使用MyBatis中的Resources类读取主配置文件的位置信息:InputStream ins= Resources.getResourceAsStream("主配置文件路径字符串")
    • 创建SqlSessionFactoryBuilder类,使用其来创建SqlSessionFactory对象:SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(ins);
    • 使用SqlSessionFactory撞见获得sqlSession对象:SqlSession sqlSession = factory.openSession();
    • 使用sqlSession来执行sql语句:sqlSession.selectList("namespace "+"." +" id");参数为sql映射文件中的namespace和id值拼接
  • 因此通过上述介绍得知,MyBatis操作数据库的步骤为:

    • 在pom文件中添加mybatis和mysql依赖
    • 创建库表、实体类、DAO接口、sql映射文件和mybatis主配置文件
    • 在sql映射文件中书写对应sql语句,在mybatis主配置文件中配置数据库连接和sql映射文件位置信息
    • 创建sqlSession对象执行sql语句,获得结果
  • 和查询操作一致,更新修改等操作也需要在sql映射文件中书写sql语句,但需要注意:

    • myBatis主配置文件中事务管理器为JDBC时,MyBatis默认为手动提交事务,因此需要使用sqlSession.commit()方法提交事务
    • 在sql映射文件中,使用#{}来传入属性值,如insert into book values(#{id},#{name})
  • 开启日志
    在mybatis的主配置文件中使用<settings>标签来配置日志,具体为:

<settings>
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值