MyBatis-1-MyBatis介绍和HelloWorld

目录

一:MyBatis介绍

1:MyBatis;和数据库进行交互;持久化层框架(SQL映射框架);

2:Mybatis和Hiberbate的比较

3:Mybatis优点

 

二:Mybatis的HelloWorld

1:项目准备

2:使用mybatis

2.1:导包

2.2:配置

2.3:测试


一:MyBatis介绍

1:MyBatis;和数据库进行交互;持久化层框架(SQL映射框架);

从原始的JDBC----dbutils(QueryRunner)-------JdbcTemplate----xxx;不用的

          称为工具;

          工具:一些功能的简单封装

          框架:某个领域的整体解决方案;缓存,考虑异常处理问题,考虑部分字段映射问题。。。

不用原生JDBC:

          1)、麻烦;

          2)、sql语句是硬编码在程序中的;耦合(数据库层的和java编码耦合);

 

2:Mybatis和Hiberbate的比较

Hibernate-数据库交互的框架(ORM框架)   (使用各种框架,全自动的框架)

ORM(Object Relation Mapping)对象关系映射;

创建好javaBean;

@Table("t_employee")

class Employee{

          private Integer empId;

          private String empName;

}

缺点:

     1)、定制sql;

     2)、HQL;SQL;

     3)、全映射框架; 部分字段映射很难;能做;

 

3:Mybatis优点

1)、MyBatis将重要的步骤抽取出来可以人工定制,其他步骤自动化;

2)、重要步骤都是写在配置文件中(好维护);

3)、完全解决数据库的优化问题;

4)、MyBatis底层就是对原生JDBC的一个简单封装;

5)、既将java编码与sql抽取了出来,还不会失去自动化功能;半自动的持久化层框架;

6)、mybatis是一个轻量级的框架;

 

二:Mybatis的HelloWorld

1:项目准备

  • 创建一个javamaven工程;
  • 创建测试库,测试表,以及封装数据的javaBean,和操作数据库的dao接口
  • 创建表:自己用工具创建
  • 创建javaBean:Employee(封装表的数据)
  • 创建一个Dao接口,用来操作数据库;

2:使用mybatis

2.1:导包

<dependencies>
    <!--mybatis的包-->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.4</version>
    </dependency>
    <!--数据库驱动-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.20</version>
    </dependency>
    <!--日志类-->
    <!-- https://mvnrepository.com/artifact/log4j/log4j -->
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>

</dependencies>

2.2:配置

1:mybatis的全局配置文件,指导mybatis如何正确运行,比如连接向哪个数据库

<?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">
            <transactionManager type="JDBC"/>
            <!--配置连接池-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis?useSSL=false&amp;serverTimezone=Hongkong&amp;characterEncoding=utf-8&amp;autoReconnect=true"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

    <!--引入我们自己编写的每一个接口的实现文件-->
    <mappers>
        <mapper resource="mapper/EmployeeDao.xml"/>
    </mappers>
</configuration>

2: 编写每一个方法都如何向数据库发送sql语句,如何执行。。。。相当于接口的实现类

<?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">
<!--namespace:名称空间;写接口的全类名,相当于告诉MyBatis这个配置文件是实现哪个接口的-->
<mapper namespace="com.wkl.dao.EmployeeDao">
    <!--
     select:用来定义一个查询操作
     id:方法名,相当于这个配置是对于某个方法的实现
     resultType:指定方法运行后的返回值类型;(查询操作必须指定的)
     #{属性名}:代表取出传递过来的某个参数的值
 -->
    <select id="getEmployee" resultType="com.wkl.bean.Employee">
    select * from t_employee where id =#{id}
  </select>
</mapper>

2.3:测试

1:根据mybatis配置文件创建一个SqlSessionFactory 工厂

//全局的mybatis配置文件的位置
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

2:sqlSessionFactory中获取sqlSession对象操作数据库即可

        //获取和数据库的一次会话;相当于getConnection();
        SqlSession session = sqlSessionFactory.openSession();
        try {
            //使用SqlSession操作数据库,获取到dao接口的实现
            EmployeeDao mapper = session.getMapper(EmployeeDao.class);
            //调用方法得出结果
            Employee employee = mapper.getEmployee(1);
            System.out.println(""+employee);

        } finally {
            //关闭连接
            session.close();
        }

3:结果:

三:mybatis的两个文件:

     1)、全局配置文件:mybatis-config.xml;指导mybatis正确运行的一些全局设置;

     2)、SQL映射文件:EmployeeDao.xml;相当于是对Dao接口的一个实现描述

3:细节:

     1)、获取到的是接口的代理对象;mybatis自动创建的;

     2)、SqlSessionFactory和SqlSession;

          SqlSessionFactory创建SqlSession对象,Factory只new一次就行

          SqlSession:相当于connection和数据库进行交互的,和数据库的一次会话,就应该创建一个新的sqlSession;

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苍煜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值