栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mybatis

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mybatis

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配置文件,方便查看日志





 
   
   
    
   
 
 
   
 
 
   
 
 
   
   
 

第三步创建Employee类

package com.atguigu.mybatis.entities;


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接口中的方法名






    
    select id,last_name lastName,email,salary,dept_id deptId from employees where id=#{id}
  

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




    
        
            
            
                
                
                
                
            
        
    
    
    
        
    


第七步测试

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();
        }
    }
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/845744.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号