Mybatis

Mybatis,第1张

Mybatis 1.1MyBatis简介
  • MyBatis是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation 迁移到了Google Code,随着开发团队转投Google Code旗下, iBatis3.x正式更名为MyBatis ,代码于2013年11月迁移到Github。
  • iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。 iBatis 提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。
  • MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架
  • MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集
  • MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Ordinary Java Object,普通的Java对象)映射成数据库中的记录
  • Mybatis 是一个 半自动的ORM(Object Relation Mapping)框架
1.2如何下载Mybatis

下载地址

1.3为什么要使用MyBatis – 现有持久化技术的对比
  • JDBC
    • ① SQL夹在Java代码块里,耦合度高导致硬编码内伤
    • ② 维护不易且实际开发需求中sql有变化,频繁修改的情况多见
  • Hibernate和JPA
    • ① 长难复杂SQL,对于Hibernate而言处理也不容易
    • ② 内部自动生产的SQL,不容易做特殊优化
    • ③ 基于全映射的全自动框架,大量字段的POJO进行部分映射时比较困难。导致数据库性能下降
  • MyBatis
    • ① 对开发人员而言,核心sql还是需要自己优化
    • ② sql和java编码分开,功能边界清晰,一个专注业务、一个专注数据
2.HelloWorld

第一步导入jar包

第二步配置log4j配置文件,方便查看日志


DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

 <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
   <param name="Encoding" value="UTF-8" />
   <layout class="org.apache.log4j.PatternLayout">
    <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m  (%F:%L) \n" />
   layout>
 appender>
 <logger name="java.sql">
   <level value="debug" />
 logger>
 <logger name="org.apache.ibatis">
   <level value="info" />
 logger>
 <root>
   <level value="debug" />
   <appender-ref ref="STDOUT" />
 root>
log4j:configuration>

第三步创建Employee类

package com.atguigu.mybatis.entities;

/**
 * @author shkstart
 * @create 2022-04-21 10:00
 */
public class Employee {
    private Integer id;
    private String lastName;
    private String email;
    private Double salary;
    private Integer deptId;

    public Employee() {
    }

    public Employee(Integer id, String lastName, String email, Double salary, Integer deptId) {
        this.id = id;
        this.lastName = lastName;
        this.email = email;
        this.salary = salary;
        this.deptId = deptId;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Double getSalary() {
        return salary;
    }

    public void setSalary(Double salary) {
        this.salary = salary;
    }

    public Integer getDeptId() {
        return deptId;
    }

    public void setDeptId(Integer deptId) {
        this.deptId = deptId;
    }

    @Override
    public String toString() {
        return "Employee{" +
                "id=" + id +
                ", lastName='" + lastName + '\'' +
                ", email='" + email + '\'' +
                ", salary=" + salary +
                ", deptId=" + deptId +
                '}';
    }
}

第四步创建EmployeeMapper(Dao)接口

public interface EmployeeMapper {
//    @Select("    select id,last_name lastName,email,salary," +
//            "dept_id deptId from employees " +
//            "where id=#{id}\n")
    Employee getEmployeeById(Integer id);
    }

第五步创建Mybatis的sql映射文件

  1. 参考MyBatis的官方文档创建EmployeeMapper.xml映射文件
  2. 完成两个绑定
    a) 标签中的namespace属性必须指定成Mapper接口的全类名
    b) Mapper映射文件中的增删改查标签的id必须指定成Mapper接口中的方法名

DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.atguigu.mybatis.mapper.EmployeeMapper">


    <select id="getEmployeeById" resultType="employee" databaseId="mysql">
    select id,last_name lastName,email,salary,dept_id deptId from employees where id=#{id}
  select>

第六步创建MyBatis的全局配置文件


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.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            dataSource>
        environment>
    environments>
    
    <mappers>
        <mapper resource="com/atguigu/mybatis/dao/EmployeeMapper.xml"/>
    mappers>
configuration>

第七步测试

public class testHelloWorld {

    public SqlSessionFactory getSqlSessionFactory() throws IOException {
        //设置MyBatis全局配置文件的路径
        String resource = "mybatis-config.xml";
        //读取MyBatis的全局配置文件
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //创建SqlSessionFactory
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        return sqlSessionFactory;
    }


    @Test
    public void  testHelloWorld() throws IOException {
        //获取SqlSessionFactory
        SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
        //获取SqlSession对象,就相当于Connection对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        try {
            //获取EmployeeMapper代理对象
            EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);
            //调用EmployeeMapper中获取员工的方法
            Employee employeeById = mapper.getEmployeeById(2);
            System.out.println("employeeById = " + employeeById);
        }finally {
            //关闭SqlSession
            sqlSession.close();
        }
    }
    }

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/789542.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-05
下一篇 2022-05-05

发表评论

登录后才能评论

评论列表(0条)

保存