Mybatis学习总结(一)

Mybatis的下载并搭建核心架构

Mybatis官方下载地址

本人下载的是mybatis-3.4.5,其目录结构为:
这里写图片描述
源码包目录结构:
这里写图片描述

[第一步]在我们的项目中需要导入mybatis依赖包mybatis核心包还有数据库驱动包
[第二步]创建mybatis核心配置文件,内容参考Mybatis源码的test文件夹下的配置文件,详细路径:src\test\java\org\apache\submitted\complex_property\Configuration.xml
我们可以在src下创建一个文件夹config用来存放项目中的配置文件
这里写图片描述
Configuration.xml文件中的environments-environment-dataSource标签内容是连接数据库的配置,包含driver,URL,username,password,关于Configuration.xml文件的知识点我们后面再细说
Configuration.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>
<!-- 和spring整合后environments配置将废除 -->
  <environments default="development">
    <environment id="development">
    <!-- 使用jdbc事务管理 -->
      <transactionManager type="JDBC">
        <property name="" value=""/>
      </transactionManager>
      <!-- 数据库连接池 -->
      <dataSource type="UNPOOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/auto_message"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
      </dataSource>
    </environment>
  </environments>

  <mappers>
    <mapper resource="com/yhc/config/sqlxml/Message.xml"/>
    <mapper resource="com/yhc/config/sqlxml/Command.xml"/>
    <mapper resource="com/yhc/config/sqlxml/CommandContent.xml"/>
  </mappers>

</configuration>
SqlSession

1.想一想jdbc:加载驱动,获取连接,创建对象,给SQL语句传参数,发送SQL语句,处理结果集, 释放资源,还有事务的管理
2.想一想Dao层的需求:需要一个对象能与数据库交互,能执行SQL语句,而Mybatis就可以提供这个对象,这就是SqlSession对象
3.SqlSession作用
①.向SQL语句传入参数
②.执行SQL语句
③.获取执行SQL语句的结果
④.事务的控制
4.如何得到SqlSession
①.通过配置文件获取数据库连接相关信息
②.通过配置信息构建SqlSessionFactory
③.通过SqlSessionFactory打开数据库会话-SqlSession
代码:

//通过配置文件获取数据库连接信息
        Reader reader = Resources.getResourceAsReader("com/yhc/.../Configuration.xml");
        //通过配置文件信息构建一个SqlSessionFactory
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        //通过sqlSessionFactory打开一个数据库会话
        SqlSession sqlSession = sqlSessionFactory.openSession();
sql的基本配置与执行

message表:
这里写图片描述
下面我们通过对message表的操作学习Mybatis
1.创建配置SQL语句的配置文件-Message.xml:可以参考Mybatis源码包的mybatis-3-mybatis-3.4.5\src\test\java\org\apache\ibatis\submitted\complex_property\User.xml文件
配置文件有很多标签,比如select, insert, delete,update

<?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="Message">

  <resultMap type="com.yhc.bean.Message" id="MessageResult">
    <id column="id" jdbcType="INTEGER" property="id"/>
    <result column="command" jdbcType="VARCHAR" property="command"/>
    <result column="description" jdbcType="VARCHAR" property="description"/>
    <result column="content" jdbcType="VARCHAR" property="content"/>
  </resultMap>

  <select id="selectMessageList" resultMap="MessageResult">
    SELECT id, command, description, content FROM message
  </select>
</mapper>

配置SQL的标签的属性:
id=”“:给标签起一个名字,给sqlSession看的,sqlSession可以通过ID找到这个标签对应的SQL语句并执行,id的名称一般跟Java代码的方法名称保持一致ID的名字必须是唯一的,如果不是唯一的,那么sqlSession不能找到确切的标签,如果是多个人开发,配置文件有多个,很难保证id是唯一的,这里就需要根节点mapper标签的namespace属性来区分了,不同的namespace下select标签的ID属性可以重名,sqlSession调用的时候要这样写sqlSession.selectList(“Message.queryMessageList”);Message为namespace的属性值,queryMessageList为标签的ID属性值,类似于package的作用,而且namespace不能省略,否则加载配置文件的时候会出错(namespace一般约定写成dao的全路径类名,id是方法名,以后会通过代理模式优化代码的,约定大于配置)
resultMap=”“:应用关系,引用的是resultMap的id属性值

配置对象属性和表字段的关系:
1.标签:resultMap

<resultMap type="com.yhc.bean.Message" id="MessageResult">
    <id column="id" jdbcType="INTEGER" property="id"/>
    <result column="command" jdbcType="VARCHAR" property="command"/>
    <result column="description" jdbcType="VARCHAR" property="description"/>
    <result column="content" jdbcType="VARCHAR" property="content"/>
</resultMap>

type属性:配的是对应哪一个类,全名称类名
ID属性:id在resultMap标签中唯一
id标签:主键列,column属性:对应查询结果集中的那个字段,property属性:对应对象中的哪一个属性名,jdbcType:填写java.sql.Types下的常量名(数据库中的字段类型与其有一种对应关系,自己查),
result标签:普通列,column属性:对应查询结果集中的那个字段,property属性:对应对象中的哪一个属性名

2.应用关系
比如在select标签中:resultMap=“MessageResult”

3.在核心配置文件中的mappers标签中导入配置SQL语句的配置文件

<mappers>
    <mapper resource="com/yhc/.../Message.xml" />
</mappers>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值