MyBatis入门

1、MyBatis框架

    MyBatis是一个优秀的数据持久层框架,在实体类和SQL语句之间建立映射关系,是一种半自动化的ORM实现。其封装性要低于Hibernate(全自动化框架),性能优越,并且小巧,简单,易学,应用也越来越广泛。

    1.1、MyBatis框架的优点

    (1)MyBatis是最简单的持久化框架,简单易学。

    (2)MyBatis相当灵活,不会对应用程序或者数据库的设计有影响,SQL写在XML里,从程序代码中彻底分离,既降低耦合度,又便于统一管理与优化。

    (3)提供XML标签,支持编写动态SQL语句。

    (4)提供映射标签,支持对象与数据库的ORM字段关系映射。

    1.2、MyBatis框架的缺点

    (1)SQL语句的编写工作量大,对开发人员编写SQL语句的功底又一定的要求。

    (2)SQL语句依赖于数据库,导致数据库移植性差,不能随意更改数据库。

2、搭建MyBatis

     以下环境的搭建和配置都是基于IDEA编辑器下的Maven项目,数据库使用的是MySql。

    2.1、在pom.xml中添加驱动的jar包(mysql.jar和mybatis.jar包)

 
    
         org.mybatis
         mybatis
         3.4.6
    
    
         mysql
         mysql-connector-java
         5.1.40
        

    2.2、在resources资源库中创建MyBatis的核心配置文件mybatis-config.xml




    
    
        
                 
            
                
                
                     
                    
                    
                    
                
        
    
    
    
            
    

    2.3、创建实体类

    2.4、创建接口类

    2.5、添加mapper文件

     注:在mapper文件中保存sql语句


        


   
   
   
           //sql语句
    
    
    

    2.6、获取SqlSession,创建测试类

          //1.加载配置文件
          Reader  resourceAsReader=Resources.getResourceAsReader("mybatis-config.xml");
          //2.创建SqlSessionFactoryBuilder对象
          SqlSessionFactoryBuilder builder= new SqlSessionFactoryBuilder();
          //3.得到session工厂
          SqlSessionFactory factory=builder.build(resourceAsReader);
          //4.得到session
          SqlSession sqlSession= factory.openSession();
          //5.调取sql语句,insert("方法的完整路径"),路径=namespace+id 
          int rs=sqlSession.insert("方法的完整路径" ,e);
          //6.一般增、删、改需提交事务才可以实现数据库的更改
          sqlSession.commit();  
          //7.关闭资源(放在finally中,应该添加非空验证)
          sqlSession.close();    

3、MyBatis一个简单的实现(实现用户数据的添加)

    3.1、数据库准备

     创建一个数据库名为test,表名为users

CREATE TABLE users(
 id INT PRIMARY KEY,
 NAME VARCHAR(20),
 sex VARCHAR(20)
)

    3.2、项目整体架构

项目整体架构

    3.3、添加驱动的jar包

 
        
            org.mybatis
            mybatis
            3.4.6
        
        
            mysql
            mysql-connector-java
            5.1.40
        
 

    3.4、MyBatis的核心配置文件mybatis-config.xml


        
            
            
            
            
                 
                
                
                
            
        
    
    
    
        
    

    3.5、User实体类

package com.fan.entity;

public class User {
    private Integer id;
    private String name;
    private String sex;

    public User() {
    }

    public User(Integer id, String name, String sex) {
        this.id = id;
        this.name = name;
        this.sex = sex;
    }

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
}

    3.6、UserDao接口类

package com.fan.dao;

import com.fan.entity.User;

public interface UserDao {
    //新增用户
    public int addUser(User user);
}

    3.7、UserMapper.xml文件




    
        insert into users(id,name,sex) values(#{id},#{name},#{sex})
    

    3.8、测试类

import com.fan.entity.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.Reader;

public class Demo1 {
    public static void main(String[] args) {
        Reader resourceAsReader=null;
        SqlSession sqlSession=null;
        try {
            User user=new User(1,"张三","男");
            resourceAsReader = Resources.getResourceAsReader("mybatis-config.xml");
            SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
            SqlSessionFactory factory = builder.build(resourceAsReader);
            sqlSession = factory.openSession();
            int i = sqlSession.insert("com.fan.dao.UserDao.addUser", user);
            sqlSession.commit();
            System.out.println("插入成功"+i+"条");

        } catch (IOException e) {
            e.printStackTrace();
        }finally {
           if(sqlSession!=null){
               sqlSession.close();
           }
           if(resourceAsReader!=null){
               try {
                   resourceAsReader.close();
               } catch (IOException e) {
                   e.printStackTrace();
               }
           }
        }

    }
}

4、下期预告

用mybatis实现CRUD

你可能感兴趣的:(MyBatis入门)