MyBatis 实例

确定依赖

  
    
      mysql
      mysql-connector-java
      8.0.15
    
    
      org.apache.logging.log4j
      log4j
      2.11.2
      pom
    
    
      org.mybatis
      mybatis
      3.5.1
    
    
      junit
      junit
      4.11
      test
    
  

确定目前的目录结构

2019-04-09-22-54-30------

编写log4j配置文件

编写log4j配置文件
在resource目录下新建log4j.xml文件






    
        
        
        log4j/log4j2Logs
        
        
        
        %d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %l - %m%n
        
        %d{yyyy-MM-dd HH:mm:ss.SSS} [%-5level] %C.%M - %m%n
        
        
        20MB
        
        DEBUG
        
        
        ${basePath}/all.log
        
        ${basePath}/%d{yyyy-MM}/all-%d{yyyy-MM-dd}-%i.log.gz
        
        50
        
        
        ${basePath}/info.log
        
        ${basePath}/%d{yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log.gz
        
        10
        
        
        ${basePath}/warn.log
        
        ${basePath}/%d{yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log.gz
        
        10
        
        
        ${basePath}/error.log
        
        ${basePath}/%d{yyyy-MM}/error-%d{yyyy-MM-dd}-%i.log.gz
        
        10
        
        
        DEBUG
    
    
    
    
    
        
        
            
            
            
            
        
        
        
        
            
            
            
            
            
            
                
            
        
        
        
        
            
            
            
            
            
                
                
            
        
        
        
        
            
            
            
            
            
                
                
            
        
        
        
        
            
            
            
            
            
                
                
            
        
    
    
    
    
        
        
            
        
        
        
            
            
            
            
            
        
    

新建mybatis配置文件

在resource目录下新建mybatis-config.xml配置文件




    
    
        
    
    
    
    
        
            
            
            
            
                
                
                
                
            
        
    

构建SqlSessionFactory

根据配置文件构建出sql 会话的产生工厂

package com.ming;

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 org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

import java.io.IOException;
import java.io.InputStream;

/**
 * @author ming
 * 构建SqlSessionFactory
 * 由于数据库连接是宝贵的,需要对数据库连接统一管理,所以使用单例进行管理
 * 这里的单利使用的双重锁
 * SqlSessionFactory为线程不安全类型需要加锁,确保同一时刻,只有一个线程可以使用该对象
 */
public class SqlSessionFactoryUtil {

    /**
     * SqlSessionFactory对象
     */
    private static SqlSessionFactory sqlSessionFactory = null;

    /**
     * 类线程锁
     */
    private static final Class CLASS_LOCK = SqlSessionFactoryUtil.class;

    /**
     * 日志管理类
     */
    private static final Logger logger = LogManager.getLogger();
    /**
     * 单例
     */
    private SqlSessionFactoryUtil(){

    }

    /**
     * @return SqlSessionFactory
     * 初始化SqlSessionFactory对象
     */
    public static SqlSessionFactory initSqlSessionFactory(){
        // 配置文件
        String resource = "mybatis-config.xml";
        // 输出流
        InputStream inputStream = null;
        try{
            // 获得配置文件输入流
            inputStream = Resources.getResourceAsStream(resource);
        }catch (IOException e){
            // 错误写入配置文件中
            logger.error(e);
        }

        // 即类锁 采用最小同步快的方式
        if(sqlSessionFactory == null) {
            // 此处排队
            synchronized (CLASS_LOCK) {
                // 多线程情况下唯一的获取工厂对象
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            }
        }
        return sqlSessionFactory;
    }

    /**
     * 打开SqlSession
     * @return SqlSession
     */
    public static SqlSession openSqlSesion(){
        // 判空处理
        if(sqlSessionFactory == null){
            initSqlSessionFactory();
        }
        return sqlSessionFactory.openSession();
    }
}

构建POJO

package com.ming;

public class role {
    private int id;
    private String role_name;
    private String note;
    public role(){

    }

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

    public void setRole_name(String role_name) {
        this.role_name = role_name;
    }

    public void setNote(String note) {
        this.note = note;
    }

    public int getId() {
        return id;
    }

    public String getRole_name() {
        return role_name;
    }

    public String getNote() {
        return note;
    }
}

编写配置文件

package com.ming;

public class role {
    private int id;
    private String role_name;
    private String note;
    public role(){

    }

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

    public void setRole_name(String role_name) {
        this.role_name = role_name;
    }

    public void setNote(String note) {
        this.note = note;
    }

    public int getId() {
        return id;
    }

    public String getRole_name() {
        return role_name;
    }

    public String getNote() {
        return note;
    }
}

更改mybatis配置文件

    
        
    

根据映射定义接口

package com.ming;

import org.apache.ibatis.annotations.Param;

import javax.management.relation.Role;

public interface RoleMapper {
    /**
     * @param id
     * @return
     */
    public Role getRole(int id);

    /**
     * @param id
     * @return
     */
    public int deleteRole(int id);

    /**
     * @param role
     * @return
     */
    public int insertRole(Role role);
}

最后编写应用类

<%@ page import="org.apache.ibatis.session.SqlSession" %>
<%@ page import="com.ming.SqlSessionFactoryUtil" %>
<%@ page import="com.ming.RoleMapper" %>
<%@ page import="com.ming.Role" %>


Hello World!

<% SqlSession sqlSession = null; try{ sqlSession = SqlSessionFactoryUtil.openSqlSesion(); RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class); Role role = new Role(); role.setRole_name("name"); role.setNote("note"); roleMapper.insertRole(role); roleMapper.deleteRole(1); sqlSession.commit(); }catch (Exception e){ e.printStackTrace(); sqlSession.rollback(); }finally { if(sqlSession != null){ sqlSession.close(); } } %>
1554124784598.remmina-2019-4-10-16-13-31.157039

你可能感兴趣的:(MyBatis 实例)