1. 程式人生 > >王者系列之Mybatis入門配置(maven版本)

王者系列之Mybatis入門配置(maven版本)

這次我們一起來做一個入門級別的持久層框架Mybatis的配置,正所謂完事開頭難。

1 引入依賴

     <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.6</version>
        </dependency>

        <dependency>
            <groupId
>
mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency> //列印日誌用 <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId
>
<version>1.2.17</version> </dependency> //測試用 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope
>
</dependency> <!-- 配置很多外掛 --> <plugins> <plugin> <!-- maven外掛 --> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <!-- 配置jdk版本 --> <source>1.8</source> <target>1.8</target> <!-- 配置編碼 --> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins> <resources> <resource> <!-- 配置打war時候的要打的檔案路徑 --> <directory>src/main/java</directory> <includes> <!-- 打入所有.class .xml結尾的檔案,maven預設是將resources目錄下的檔案在構建的時候一起打包,例如,*.xml之類的檔案,如果要放在java目錄下面的話,就要在這裡告訴maven了 --> <include>**/*.class</include> <include>**/*.xml</include> </includes> </resource> </resources>

2 配置mybatis的配置檔案

<configuration>
//這些標籤都是有固定順序的,這個阿帕奇要求的,用別人的東西,當然要遵守別人的遊戲規則。

//引入外部配置檔案,下面的${jdbc.dataSource}這些就是獲取外部配置檔案的值,這樣做的好處就是不用每次來修改mybatis的配置檔案,只要在外部得properties檔案中配置即可;
    <properties resource="settings.properties"/>

    <!-- 和spring整合後 environments配置將廢除 -->
    <environments default="development">
        <environment id="development">
            <!-- 使用jdbc事務管理 -->
            <transactionManager type="${jdbc.transactionManager}"/>
            <!-- 資料庫連線池 -->
            <dataSource type="${jdbc.dataSource}">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url"
                          value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 載入sqlmap檔案 -->
    <mappers>
        <mapper resource="com/quyang/my/sqlmap/BaseUserMap.xml"/>
    </mappers>
</configuration>

3 編寫sql檔案

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
        //這裡的namespace最好用介面的全路徑,實際開發中大多都是面向介面的方式。這裡寫介面的全路徑就是指介面和這個sql檔案進行了繫結。
<mapper namespace="com.quyang.my.map.BaseUserMapa">

//查詢語句,這個檔案怎麼來寫,這裡就不多說了,很簡單的,不懂百度
    <select id="selectBaseUserById" parameterType = "Integer" resultType="com.quyang.my.BaseUser">
        select * from base_user where user_id = #{iddd}
    </select>
</mapper>

4 外部配置檔案

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/user?characterEncoding=utf-8
jdbc.username=root
jdbc.password=123456
jdbc.transactionManager=JDBC
jdbc.dataSource=POOLED

可以和上面的mybatis的配置檔案對照來看。

5 日誌檔案配置

# Global logging configuration 輸出debug級別以上
log4j.rootLogger=DEBUG, stdout
# Console output... log輸出到控制檯,ConsoleAppender表示log輸出到控制檯
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
# log佈局
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# 輸入格式
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

6 測試

  public void testApp() {
        try {
        //首先就是要建在mybatis的配置檔案
            InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
            SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
            SqlSession sqlSession = sessionFactory.openSession();
            //獲取介面的例項,實質是一個代理物件;
            BaseUserMapa selectOne = sqlSession.getMapper(BaseUserMapa.class);
            //呼叫介面的方法查表
            BaseUser baseUser = selectOne.selectBaseUserById(10000);
            System.out.println("AppTest.testApp=" + baseUser.getName());

        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("AppTest.error");
        }
    }

7 結果

E:\jdk\set\bin\java -ea -Didea.test.cyclic.buffer.size=1048576 -javaagent:D:\ideaUI\lib\idea_rt.jar=49322:D:\ideaUI\bin -Dfile.encoding=UTF-8 -classpath D:\ideaUI\lib\idea_rt.jar;D:\ideaUI\plugins\junit\lib\junit-rt.jar;D:\ideaUI\plugins\junit\lib\junit5-rt.jar;E:\jdk\set\jre\lib\charsets.jar;E:\jdk\set\jre\lib\deploy.jar;E:\jdk\set\jre\lib\ext\access-bridge-64.jar;E:\jdk\set\jre\lib\ext\cldrdata.jar;E:\jdk\set\jre\lib\ext\dnsns.jar;E:\jdk\set\jre\lib\ext\jaccess.jar;E:\jdk\set\jre\lib\ext\jfxrt.jar;E:\jdk\set\jre\lib\ext\localedata.jar;E:\jdk\set\jre\lib\ext\nashorn.jar;E:\jdk\set\jre\lib\ext\sunec.jar;E:\jdk\set\jre\lib\ext\sunjce_provider.jar;E:\jdk\set\jre\lib\ext\sunmscapi.jar;E:\jdk\set\jre\lib\ext\sunpkcs11.jar;E:\jdk\set\jre\lib\ext\zipfs.jar;E:\jdk\set\jre\lib\javaws.jar;E:\jdk\set\jre\lib\jce.jar;E:\jdk\set\jre\lib\jfr.jar;E:\jdk\set\jre\lib\jfxswt.jar;E:\jdk\set\jre\lib\jsse.jar;E:\jdk\set\jre\lib\management-agent.jar;E:\jdk\set\jre\lib\plugin.jar;E:\jdk\set\jre\lib\resources.jar;E:\jdk\set\jre\lib\rt.jar;D:\eclipse\myweb\testmybatis\target\test-classes;D:\eclipse\myweb\testmybatis\target\classes;D:\repo\repository\junit\junit\3.8.1\junit-3.8.1.jar;D:\repo\repository\asm\asm\3.3.1\asm-3.3.1.jar;D:\repo\repository\cglib\cglib\2.2\cglib-2.2.jar;D:\repo\repository\commons-logging\commons-logging\1.2\commons-logging-1.2.jar;D:\repo\repository\javassist\javassist\3.11.0.GA\javassist-3.11.0.GA.jar;D:\repo\repository\log4j\log4j\1.2.17\log4j-1.2.17.jar;D:\repo\repository\org\apache\logging\log4j\log4j-api\2.5\log4j-api-2.5.jar;D:\repo\repository\org\apache\logging\log4j\log4j-core\2.5\log4j-core-2.5.jar;D:\repo\repository\org\mybatis\mybatis\3.2.6\mybatis-3.2.6.jar;D:\repo\repository\mysql\mysql-connector-java\5.1.38\mysql-connector-java-5.1.38.jar;D:\repo\repository\org\slf4j\slf4j-api\1.7.18\slf4j-api-1.7.18.jar;D:\repo\repository\org\slf4j\slf4j-log4j12\1.7.7\slf4j-log4j12-1.7.7.jar com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 -junit3 com.quyang.my.AppTest,testApp
DEBUG [main] - Logging initialized using 'class org.apache.ibatis.logging.slf4j.Slf4jImpl' adapter.
DEBUG [main] - PooledDataSource forcefully closed/removed all connections.
DEBUG [main] - PooledDataSource forcefully closed/removed all connections.
DEBUG [main] - PooledDataSource forcefully closed/removed all connections.
DEBUG [main] - PooledDataSource forcefully closed/removed all connections.
DEBUG [main] - Opening JDBC Connection
Sun Aug 20 19:29:46 GMT+08:00 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
DEBUG [main] - Created connection 1899073220.
DEBUG [main] - Setting autocommit to false on JDBC Connection [[email protected]]
DEBUG [main] - ==>  Preparing: select * from base_user where user_id = ? 
DEBUG [main] - ==> Parameters: 10000(Integer)
DEBUG [main] - <==      Total: 1
AppTest.testApp=13738860434

Process finished with exit code 0

可以看出,log4j將所有的資訊都打印出來了,包括查詢標的select語句和引數,結果,13738860434這個就是我查出來的本地mysql資料庫的資料;

8 要注意的問題

要搞清楚類路徑是什麼,一般我們寫一個類的話,檔案最上面會出現com.xxx.xxx,這就是檔案的路徑,而要寫一個類路徑下的檔案的話,寫出來的效果是,檔案做上面啥都沒有,也就是說沒有包名,就是在根目錄下。

相關推薦

王者系列Mybatis入門配置maven版本

這次我們一起來做一個入門級別的持久層框架Mybatis的配置,正所謂完事開頭難。 1 引入依賴 <dependency> <groupId>org.mybatis</groupId>

原始碼學習系列SpringBoot自動配置篇一

原始碼學習系列之SpringBoot自動配置原始碼學習(篇一) ok,本部落格嘗試跟一下Springboot的自動配置原始碼,做一下筆記記錄,自動配置是Springboot的一個很關鍵的特性,也容易被忽略的屬性,因為這個屬性被包括在@SpringBootApplication註解裡,所以不去跟一下原始碼都不知

原始碼學習系列SpringBoot自動配置篇二

原始碼學習系列之SpringBoot自動配置(篇二)之HttpEncodingAutoConfiguration 原始碼分析 繼上一篇部落格原始碼學習系列之SpringBoot自動配置(篇一)之後,本部落格繼續跟一下SpringBoot的自動配置原始碼 ok,先複習一下上一篇的內容,從前面的學習,我們知道了S

Java入門系列hashCode和equals十二

前言 前面兩節內容我們詳細講解了Hashtable演算法和原始碼分析,針對雜湊函式始終逃脫不掉hashCode的計算,本節我們將詳細分析hashCode和equals,同時您將會看到本節內容是從《Effective Java》學習整理而來(吐槽一句,這本書中文版翻譯的真垃圾),對於《Effective Ja

Openstack 安裝部署指南翻譯系列 Cinder服務安裝Block Storage

openstack 翻譯 cinder安裝1.1.1.1. Cinder服務安裝(Block Storage)塊存儲服務(cinder)為訪客實例提供塊存儲設備。存儲設置方法由塊存儲驅動程序確定,或者在多後端配置的情況下確定驅動程序。有各種可用的驅動程序:NAS / SAN,NFS,iSCSI,Ceph等。塊

走進Spring Cloud十一 SpringCloud bus 訊息匯流排重新整理配置Greenwich版本

走進Spring Cloud之十一 SpringCloud bus 訊息匯流排重新整理配置(Greenwich版本) SpringCloud Bus 改造config-client pom.xml bootstrap.yml

編解碼框架Marshalling入門案例結合Netty

Marshalling入門 1.1 基本概念 JBoss Marshalling是一個Java物件序列化包,對JDK預設的序列化框架進行了優化,但又保持跟java.io.Serializable介面的相容,同時增加了一些可調的引數和附加的特性,這些引數和特性可通

機器學習python入門指南十一numpy常用方法簡介

  numpy庫的安裝: window下命令列直接輸入pip install numpy 匯入numpy庫:import numpy 或者 import numpy as np numpy與list: 相同之處: 都可以用下標訪問元素,如a[3]. 都可以

前端非同步程式設計系列Promise/Deferred模式3/4

在這篇文章中,我會介紹另外一種非同步程式設計的解決方案:Promise/Deferred模式。這種模式最早出現於Dojo的程式碼中,09年被Kris Zyp抽象為一個提議草案,釋出於CommonJS規範中,並抽象出Promise/A、Promise/B、Promise/D這樣典型的非同步Promis

Mybatis Generator 使用Maven外掛

最近搭一個專案後臺框架,專案採用SSM框架,專案比較緊急,所以選用Mybatis Generator來自動生成XML、Dao和Model來減少重複的工作。 Mybatis Generator有以下兩種使用方法: 為了保證專案

大資料系列實時計算Spark十八Python生成圖表

1.啟動pyspark pyspark --master local[2] 2.

1.偏頭痛楊的中高階java後端面試題攻略系列java基礎篇持續更新

前戲即使不跳槽也建議每隔一段時間出去面試幾次,面試的目的不在於拿offer入職,而是在於你知道你自己目前的水平是幾斤幾兩,是否有被市場所淘汰的危機。終身學習,居安思危,保持危機意識。每個人的時間與精力都是有限的,有限的時間做有限的事情,不要什麼都學,做減法,要有自己的強項,知

大資料系列實時計算Spark十七Python與Hbase整合

1.準備工作(所用到的工具庫會放在最後供下載使用) 1.1.安裝thrift   cmd>pip install thrift   我使用的是Anaconda3,下載下來的包會存放到  /Lib/site-packages/目錄下,如果沒有使用Anaconda3,

2.偏頭痛楊的中高階java後端面試題攻略系列io&nio篇持續更新

前戲要是以為io就只是用於一個檔案的上傳和下載那你可就大錯特錯了。。。但凡涉及到網路通訊,都離不開io的知識。。。其中NIO是重中之重,想深入學習NIO的童鞋可以去玩netty底層程式碼。切記NIO不能只停留在表面概念階段,這樣被面試官發現會大大的減分。NIO要結合java的

JavaScript算法系列-----------------鏈表反轉JS實現

bsp art eve ext list 通過 -- this str 題目:輸入一個鏈表,按鏈表值從尾到頭的順序返回一個ArrayList。 之前一直對JS實現鏈表理解不了,被算法大牛指點了一下豁然開朗。 function ListNode(x){ this

LinuxAnsible入門用法實驗解析

blog work sent 取消 script 主機系統 http water 開頭 Linux之Ansible入門用法(實驗解析) 實驗前提:三臺CentOS7和一臺CentOS6,其中一臺CentOS7當作Ansible堡壘機,其余三臺主機當作被控主機。四臺主機均為最

安裝JDK及環境變數配置MAC版本

1、訪問Oracle官網 http://www.oracle.com,瀏覽到首頁的底部選單 ,然後按下圖提示操作: 2.點選“JDK DOWNLOAD”按鈕: 3.選擇“Accept Lisence Agreement”同意協議: 4.點

私有云落地解決方案openstack高可用pike版本-cinder

作者:【吳業亮】 建立使用者 # openstack user create --domain default --project service --password Changeme_123

私有云落地解決方案openstack高可用pike版本-架構

作者:【吳業亮】 本架構借鑑redhat架構 1、API 服務:包括 *-api, neutron-server,glance-registry, nova-novncproxy,keystone,httpd 等。由 HAProxy 提供負載均衡,將請求

私有云落地解決方案openstack高可用pike版本-horizon

作者:【吳業亮】 安裝rpm包 # yum -y install openstack-dashboard 修改配置檔案 /etc/openstack-dashboard/local_sett