国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

MyBatis 實(shí)例

Hydrogen / 2956人閱讀

摘要:確定依賴確定目前的目錄結(jié)構(gòu)編寫配置文件編寫配置文件在目錄下新建文件日志級別以及優(yōu)先級排序后面的這個(gè)用于設(shè)置自身內(nèi)部的信息輸出可以不設(shè)置當(dāng)設(shè)置成時(shí)你會看到內(nèi)部各種詳細(xì)輸出能夠自動檢測修改配置文件和重新配置本身設(shè)置間隔

確定依賴
  
    
      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
    
  
確定目前的目錄結(jié)構(gòu)

編寫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配置文件




    
    
        
    
    
    
    
        
            
            
            
            
                
                
                
                
            
        
    
構(gòu)建SqlSessionFactory

根據(jù)配置文件構(gòu)建出sql 會話的產(chǎn)生工廠

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
 * 構(gòu)建SqlSessionFactory
 * 由于數(shù)據(jù)庫連接是寶貴的,需要對數(shù)據(jù)庫連接統(tǒng)一管理,所以使用單例進(jìn)行管理
 * 這里的單利使用的雙重鎖
 * SqlSessionFactory為線程不安全類型需要加鎖,確保同一時(shí)刻,只有一個(gè)線程可以使用該對象
 */
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){
            // 錯(cuò)誤寫入配置文件中
            logger.error(e);
        }

        // 即類鎖 采用最小同步快的方式
        if(sqlSessionFactory == null) {
            // 此處排隊(duì)
            synchronized (CLASS_LOCK) {
                // 多線程情況下唯一的獲取工廠對象
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            }
        }
        return sqlSessionFactory;
    }

    /**
     * 打開SqlSession
     * @return SqlSession
     */
    public static SqlSession openSqlSesion(){
        // 判空處理
        if(sqlSessionFactory == null){
            initSqlSessionFactory();
        }
        return sqlSessionFactory.openSession();
    }
}
構(gòu)建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配置文件
    
        
    
根據(jù)映射定義接口
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);
}
最后編寫應(yīng)用類
<%@ 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(); } } %>

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/77584.html

相關(guān)文章

  • MyBatis理解與掌握(入門例子)

    摘要:的實(shí)例不是線程安全的,因此是不能被共享的,所以它的最佳的作用域是請求或方法作用域。下面的示例就是一個(gè)確保關(guān)閉的標(biāo)準(zhǔn)模式依賴注入框架可以創(chuàng)建線程安全的基于事務(wù)的和映射器并將它們直接注入到你的中,因此可以直接忽略它們的生命周期。 MyBatis理解與掌握(入門例子) @(MyBatis)[Java, 框架, MyBatis] 配置文件 mybatis-config.xml ...

    lufficc 評論0 收藏0
  • mybatis 學(xué)習(xí)筆記1

    摘要:要想使用需要在的中導(dǎo)入包和的驅(qū)動包每個(gè)基于的應(yīng)用都是以一個(gè)的實(shí)例為中心的的實(shí)例可以通過獲得則可以從配置文件或一個(gè)預(yù)先定制的的實(shí)例構(gòu)建出的實(shí)例配置文件中包含了對系統(tǒng)的核心設(shè)置,包含獲取數(shù)據(jù)庫連接實(shí)例的數(shù)據(jù)源和決定事務(wù)作用域和控制方式的事 1 要想使用mybatis 需要在maven的pom.xml中導(dǎo)入jar包和mysql的驅(qū)動包 org.mybatis ...

    xiangzhihong 評論0 收藏0
  • MyBatis在Spring環(huán)境下的事務(wù)管理

    摘要:對于第二個(gè)問題,本文將嘗試通過分析源代碼和實(shí)驗(yàn)找到它的,主要涉及到以下內(nèi)容問題描述與分析在環(huán)境下的載入過程在環(huán)境下事務(wù)的管理實(shí)驗(yàn)驗(yàn)證項(xiàng)目環(huán)境整個(gè)系統(tǒng)是微服務(wù)架構(gòu),這里討論的項(xiàng)目是指一個(gè)單獨(dú)的服務(wù)。 MyBatis的設(shè)計(jì)思想很簡單,可以看做是對JDBC的一次封裝,并提供強(qiáng)大的動態(tài)SQL映射功能。但是由于它本身也有一些緩存、事務(wù)管理等功能,所以實(shí)際使用中還是會碰到一些問題——另外,最近接觸...

    joywek 評論0 收藏0
  • MyBatis的原理

    摘要:不是線程安全的,所以在使用的時(shí)候一定要保證他是局部變量。他對應(yīng)的類圖如下有幾種常見的實(shí)現(xiàn)是默認(rèn)的非線程安全的實(shí)現(xiàn)是中對的線程安全實(shí)現(xiàn),在內(nèi)部是使用的的形式來保證線程安全的是的核心。是線程安全的,可以被多個(gè)或映射器所共享使用。 MyBatis核心類 SqlSessionFactory 每一個(gè)MyBatis應(yīng)用都是以一個(gè)SqlSessionFactory的實(shí)例為核心構(gòu)建的。SqlSessi...

    Yu_Huang 評論0 收藏0
  • MyBatis緩存介紹

    摘要:緩存介紹正如大多數(shù)持久層框架一樣,同樣提供了一級緩存和二級緩存的支持一級緩存基于的本地緩存,其存儲作用域?yàn)椋?dāng)或之后,該中的所有就將清空。一級緩存實(shí)現(xiàn)對的操作內(nèi)部都是通過來執(zhí)行的。 MyBatis緩存介紹   正如大多數(shù)持久層框架一樣,MyBatis 同樣提供了一級緩存和二級緩存的支持   一級緩存: 基于PerpetualCache 的 HashMap本地緩存,其存儲作用域?yàn)?Se...

    mingde 評論0 收藏0
  • Spring中接口動態(tài)實(shí)現(xiàn)的解決方案

    摘要:聲明解決方案是基于源碼,進(jìn)行二次開發(fā)實(shí)現(xiàn)。其是基于層面,不存在任何的接口實(shí)現(xiàn)類。因而在實(shí)現(xiàn)的過程中,首先要解決的是如何動態(tài)實(shí)現(xiàn)接口的實(shí)例化。其次是如何將使接口根據(jù)注解實(shí)現(xiàn)相應(yīng)的功能。 聲明解決方案是基于Mybatis源碼,進(jìn)行二次開發(fā)實(shí)現(xiàn)。 問題領(lǐng)導(dǎo)最近跟我提了一個(gè)需求,是有關(guān)于實(shí)現(xiàn)類Mybatis的@Select、@Insert注解的功能。其是基于interface層面,不存在任何的...

    ispring 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<