MyBatis的資料庫操作入門(二)
前面寫了個實體類,不過沒有用到,下面我想列印smbms_user表的所有資訊
還是原來那個專案,在這裡有個問題,比如你要食物,就要建造一次工廠(工廠是用完就摧毀)來生產,那這樣就很麻煩了,每要一次食物就要建造一次工廠
下面我們可以把工廠封裝起來,放到工具類util裡面,以後要用到就呼叫就行了
新建一個包cn.bdqn.util,java名字為MyBatisUtil
package cn.bdqn.util; import java.io.IOException; import java.io.InputStream; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class MyBatisUtil { private static SqlSessionFactory sqlSessionFactory; /** * 建立SqlSessionFactory 只建立一次 */ static{ try { String resource = "mybatis-config.xml"; InputStream inputStream; inputStream = Resources.getResourceAsStream(resource); //建立SqlSessionFactory物件,讀取配置檔案 sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } /** * 獲得SqlSessionFactory * @return SqlSessionFactory */ public static SqlSessionFactory getSqlSessionFactory(){ return sqlSessionFactory; } /** * 獲得 SqlSession * @return SqlSession */ public static SqlSession getSqlSession(){ return sqlSessionFactory.openSession(false); } /** * 關閉sqlSession * @param sqlSession */ public static void closeSession(SqlSession sqlSession){ if(sqlSession!=null){ sqlSession.close(); } } }
靜態程式碼塊:
在java中使用static關鍵字宣告的程式碼塊。靜態塊用於初始化類,為類的屬性初始化。每個靜態程式碼塊只會執行一次。 由於JVM在載入類時會執行靜態程式碼塊,所以靜態程式碼塊先於主方法執行。
注意:1 靜態程式碼塊不能存在於任何方法體內。2 靜態程式碼塊不能直接訪問靜態例項變數和例項方法,需要通過類的例項物件來訪問。且只執行一次
然後在cn.bdqn.dao裡面新建一個介面,名字要和對映檔案一樣
程式碼如下,用集合的形式
package cn.bdqn.dao; import java.util.List; import cn.bdqn.pojo.User; public interface UserMapper { List<User> getUserList(); }
cn.bdqn.dao裡面的UserMapper.xml也要增加一個select程式碼
<?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"> <mapper namespace="cn.bdqn.dao.UserMapper"> <select id="count" resultType="int"> Select count(1) from smbms_user </select> <select id="getUserList" resultType="cn.bdqn.pojo.User"> Select * from smbms_user </select> </mapper>
第一個select裡面的在這裡我們就沒有用到,看第二個新增的select
id要和接口裡面的方法名字一致,返回型別是實體類的路徑,注意是.,sql語句的意思是查詢這個表的詳細資訊
現在改寫Test類,程式碼如下:
package cn.bdqn.test;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;
import cn.bdqn.dao.UserMapper;
import cn.bdqn.pojo.User;
import cn.bdqn.util.MyBatisUtil;
public class Test {
private static Logger logger = Logger.getLogger("Test");
public static void main(String[] args) {
//getUserCount();
getUserList();
}
public static void getUserList(){
SqlSession session = MyBatisUtil.getSqlSession();
//繫結Mapper介面
List<User> userList = session.getMapper(UserMapper.class).getUserList();
/*List<User> userList = session.getMapper(UserMapper.class).getUserList();*/
for (User user : userList) {
logger.debug("使用者:" + user);
}
MyBatisUtil.closeSession(session);
}
/* private static void getUserCount() {
SqlSession session = MyBatisUtil.getSqlSession();
// 呼叫mapper檔案進行資料操作
int count = session.selectOne("cn.bdqn.dao.UserMapper.count");
logger.debug("使用者數量是:" + count);
MyBatisUtil.closeSession(session);
}*/
}
把上一個求記錄數的程式碼封裝了一下,因為沒有使用,就註釋掉了
運行了一下,結果如下:
[DEBUG] 2018-09-29 17:29:39,662 org.apache.ibatis.logging.LogFactory - Logging initialized using 'class org.apache.ibatis.logging.log4j.Log4jImpl' adapter.
[DEBUG] 2018-09-29 17:29:39,663 org.apache.ibatis.logging.LogFactory - Logging initialized using 'class org.apache.ibatis.logging.log4j.Log4jImpl' adapter.
[DEBUG] 2018-09-29 17:29:39,675 org.apache.ibatis.datasource.pooled.PooledDataSource - PooledDataSource forcefully closed/removed all connections.
[DEBUG] 2018-09-29 17:29:39,675 org.apache.ibatis.datasource.pooled.PooledDataSource - PooledDataSource forcefully closed/removed all connections.
[DEBUG] 2018-09-29 17:29:39,675 org.apache.ibatis.datasource.pooled.PooledDataSource - PooledDataSource forcefully closed/removed all connections.
[DEBUG] 2018-09-29 17:29:39,675 org.apache.ibatis.datasource.pooled.PooledDataSource - PooledDataSource forcefully closed/removed all connections.
[DEBUG] 2018-09-29 17:29:39,806 org.apache.ibatis.transaction.jdbc.JdbcTransaction - Opening JDBC Connection
[DEBUG] 2018-09-29 17:29:40,131 org.apache.ibatis.datasource.pooled.PooledDataSource - Created connection 269468037.
[DEBUG] 2018-09-29 17:29:40,132 cn.bdqn.dao.UserMapper.getUserList - ooo Using Connection [[email protected]]
[DEBUG] 2018-09-29 17:29:40,133 cn.bdqn.dao.UserMapper.getUserList - ==> Preparing: Select * from smbms_user
[DEBUG] 2018-09-29 17:29:40,153 cn.bdqn.dao.UserMapper.getUserList - ==> Parameters:
[DEBUG] 2018-09-29 17:29:40,223 Test - 使用者:User [address=北京市海淀區成府路207號, birthday=Mon Oct 10 00:00:00 CST 1983, createdBy=1, creationDate=Thu Mar 21 16:52:07 CST 2013, gender=1, id=1, modifyBy=null, modifyDate=null, phone=13688889999, userCode=admin, userName=系統管理員, userPassword=1234567, userRole=1]
[DEBUG] 2018-09-29 17:29:40,223 Test - 使用者:User [address=北京市東城區前門東大街9號, birthday=Sat Dec 10 00:00:00 CST 1983, createdBy=1, creationDate=Fri Sep 28 22:58:39 CST 2018, gender=2, id=2, modifyBy=null, modifyDate=null, phone=13688884457, userCode=liming, userName=李明, userPassword=0000000, userRole=2]
[DEBUG] 2018-09-29 17:29:40,223 Test - 使用者:User [address=北京市朝陽區北辰中心12號, birthday=Tue Jun 05 00:00:00 CST 1984, createdBy=1, creationDate=Wed Dec 31 19:52:09 CST 2014, gender=2, id=5, modifyBy=null, modifyDate=null, phone=18567542321, userCode=hanlubiao, userName=韓路彪, userPassword=0000000, userRole=2]
[DEBUG] 2018-09-29 17:29:40,223 Test - 使用者:User [address=北京市海淀區學院路61號, birthday=Wed Jun 15 00:00:00 CST 1983, createdBy=1, creationDate=Mon Feb 11 10:51:17 CST 2013, gender=1, id=6, modifyBy=null, modifyDate=null, phone=13544561111, userCode=zhanghua, userName=張華, userPassword=0000000, userRole=3]
[DEBUG] 2018-09-29 17:29:40,223 Test - 使用者:User [address=北京市海淀區西二旗輝煌國際16層, birthday=Fri Dec 31 00:00:00 CST 1982, createdBy=1, creationDate=Wed Jun 11 19:09:07 CST 2014, gender=2, id=7, modifyBy=null, modifyDate=null, phone=13444561124, userCode=wangyang, userName=王洋, userPassword=0000000, userRole=3]
[DEBUG] 2018-09-29 17:29:40,223 Test - 使用者:User [address=北京市海淀區回龍觀小區10號樓, birthday=Fri Mar 07 00:00:00 CST 1986, createdBy=1, creationDate=Thu Apr 21 13:54:07 CST 2016, gender=1, id=8, modifyBy=null, modifyDate=null, phone=18098764545, userCode=zhaoyan, userName=趙燕, userPassword=0000000, userRole=3]
[DEBUG] 2018-09-29 17:29:40,224 Test - 使用者:User [address=北京市朝陽區管莊新月小區12樓, birthday=Sun Jan 04 00:00:00 CST 1981, createdBy=1, creationDate=Wed May 06 10:52:07 CST 2015, gender=2, id=10, modifyBy=null, modifyDate=null, phone=13387676765, userCode=sunlei, userName=孫磊, userPassword=0000000, userRole=3]
[DEBUG] 2018-09-29 17:29:40,224 Test - 使用者:User [address=北京市朝陽區建國門南大街10號, birthday=Sun Mar 12 00:00:00 CST 1978, createdBy=1, creationDate=Wed Nov 09 16:51:17 CST 2016, gender=2, id=11, modifyBy=null, modifyDate=null, phone=13367890900, userCode=sunxing, userName=孫興, userPassword=0000000, userRole=3]
[DEBUG] 2018-09-29 17:29:40,224 Test - 使用者:User [address=朝陽區管莊路口北柏林愛樂三期13號樓, birthday=Fri Mar 28 00:00:00 CST 1986, createdBy=1, creationDate=Tue Aug 09 05:52:37 CST 2016, gender=1, id=12, modifyBy=1, modifyDate=Thu Apr 14 14:15:36 CST 2016, phone=18098765434, userCode=zhangchen, userName=張晨, userPassword=0000000, userRole=3]
[DEBUG] 2018-09-29 17:29:40,224 Test - 使用者:User [address=北京市海淀區北航家屬院10號樓, birthday=Wed Nov 04 00:00:00 CST 1981, createdBy=1, creationDate=Mon Jul 11 08:02:47 CST 2016, gender=2, id=13, modifyBy=null, modifyDate=null, phone=13689674534, userCode=dengchao, userName=鄧超, userPassword=0000000, userRole=3]
[DEBUG] 2018-09-29 17:29:40,224 Test - 使用者:User [address=北京市朝陽區北苑家園茉莉園20號樓, birthday=Tue Jan 01 00:00:00 CST 1980, createdBy=1, creationDate=Sun Feb 01 03:52:07 CST 2015, gender=2, id=14, modifyBy=null, modifyDate=null, phone=13388886623, userCode=yangguo, userName=楊過, userPassword=0000000, userRole=3]
[DEBUG] 2018-09-29 17:29:40,224 Test - 使用者:User [address=北京市昌平區天通苑3區12號樓, birthday=Fri Dec 04 00:00:00 CST 1987, createdBy=1, creationDate=Sat Sep 12 12:02:12 CST 2015, gender=1, id=15, modifyBy=null, modifyDate=null, phone=18099897657, userCode=zhaomin, userName=趙敏, userPassword=0000000, userRole=2]
[DEBUG] 2018-09-29 17:29:40,224 org.apache.ibatis.transaction.jdbc.JdbcTransaction - Resetting autocommit to true on JDBC Connection [[email protected]]
[DEBUG] 2018-09-29 17:29:40,226 org.apache.ibatis.transaction.jdbc.JdbcTransaction - Closing JDBC Connection [[email protected]]
[DEBUG] 2018-09-29 17:29:40,227 org.apache.ibatis.datasource.pooled.PooledDataSource - Returned connection 269468037 to pool.
相關推薦
MyBatis的資料庫操作入門(二)
前面寫了個實體類,不過沒有用到,下面我想列印smbms_user表的所有資訊 還是原來那個專案,在這裡有個問題,比如你要食物,就要建造一次工廠(工廠是用完就摧毀)來生產,那這樣就很麻煩了,每要一次食物就要建造一次工廠 下面我們可以把工廠封裝起來,放到工具類util裡面,以
MyBatis的資料庫操作入門(五)
UserMapper.java新增一個方法 package cn.bdqn.dao; import java.util.List; import java.util.Map; import cn.bdqn.pojo.User; public interface Use
MyBatis的資料庫操作入門(八)
修改密碼 UserMapper.java新增一個方法 package cn.bdqn.dao; import java.util.List; import java.util.Map; import org.apache.ibatis.annotations.Para
MyBatis的資料庫操作入門(七)
修改 UserMapper.java新增一個方法 package cn.bdqn.dao; import java.util.List; import java.util.Map; import cn.bdqn.pojo.User; public interface
MyBatis的資料庫操作入門(九)
刪除 UserMapper.java新增一個方法 package cn.bdqn.dao; import java.util.List; import java.util.Map; import org.apache.ibatis.annotations.Param;
30天自制操作系統(二)匯編語言學習與Makefile入門
-c 如何 wid 開發 大小端 bio strong 入門 小端 1 介紹文本編輯器 這部分可直接略過 2 繼續開發 helloos.nas中核心程序之前的內容和啟動區以外的內容先不講了,因為還涉及到一些軟盤方面的知識。然後來講的是helloos.nas這個文件 ; h
MyBatis入門(二)—— 輸入映射和輸出映射、動態sql、關聯查詢
輸出類型 sql name屬性 一對一 test HA h標簽 自動 CI p.p4 { margin: 0.0px 0.0px 0.0px 10.0px; font: 10.5px "PingFang SC" } p.p6 { margin: 0.0px 0.0px 0.
Docker入門(二)基本操作
ddr root eba nxv let targe rules gist gdi (一)、容器的使用1、docker客戶端命令。輸入docker查看docker用法的語法和相關的命令。 [root@localhost ~]# docker Usage: docker
Mybatis入門(二)
一、資料模型分析思路 1、每張表記錄的內容 分模組對每張表的內容進行熟悉,相當於學習系統需求(功能)的過程; 2、每張表的重要欄位 非空欄位、外來鍵欄位 3、資料庫
OpenCV3入門(二)Mat操作
1、Mat結構 1.1、Mat資料 Mat本質上是由兩個資料部分組成的類: 矩陣頭:包含資訊有矩陣的大小,用於儲存的方法,矩陣儲存的地址等 資料矩陣指標:指向包含了畫素值的矩陣。 矩陣頭部的大小是恆定的,矩陣本身的大小因影象的不同而不同,通常是較大的數量級。 在程式中傳遞影象並在有些時候建立影象副本需要花費很
(數字IC)低功耗設計入門(二)——功耗的分析
layout 變化 監視 merge obj source divide 傳播 總結 前面學習了進行低功耗的目的個功耗的構成,今天就來分享一下功耗的分析。由於是面向數字IC前端設計的學習,所以這裏的功耗分析是基於DC中的power compiler工具;更精確的功耗分析
Linux入門(二)
man linux終端 linux發行版本 linux文件系統初步 google高級用法 Linux常用的基礎命令1.發行版本2.CISC、RISC3.編譯和反編譯(GPL、LGPL、BSD)4.程序包管理5.文件系統初步終端設備虛擬終端圖形終端串行終端偽終端Linux的哲學思想6.開源協
Docker入門(二)
docker安裝 docker基礎命令 一、Docker相關概念1.Docker: namespace,cgroup: 解決方案: lxc,openvz lxc:linux containers docker最初就是lxc的封裝版本。 docker engine/docker server:輸
vue-cli入門(二)——項目結構
常用 作用 寫到 www. 簡單的 端口 server 標簽 emp 前言 在上一篇項目搭建文章中,我們已經下載安裝了node環境以及vue-cli,並且已經成功構建了一個vue-cli項目,那麽接下來,我們來梳理一下vue-cli項目的結構。 總體框架 一個vue-c
log4j2使用入門(二)——與不同日誌框架的適配
一個 slf4 core log4j 說明 不同 activemq 進行 -a 在上方中已經指出log4j2可以與不同的日誌框架進行適配,這裏舉一些實際應用進行說明: 1.比如我們在項目中使用了log4j2作為日誌器,使用了log4j-api2.6.2.jar和log4j
【轉】VBA編程入門(二)
mat 復雜 任務 遙控 一次 環境 box range 使用 詳解VBA編程是什麽 由 vietdung90 創建,最後一次修改 2016-10-19 直到 90 年代早期,使應用程序自動化還是充滿挑戰性的領域.對每個需要自動化的應用程序,人們不得不學習一種不
Hibernate入門 (二)三種狀態
依賴 區分 dia 讀取配置文件 hibernate conn null threads 定時 .大配置 方言 property name="dialect" 取值 自動構建表結構 property name="hbm2ddl" true con
PHP基礎入門(二)【PHP函數基礎】
就是 進行 size 自定義 取地址 代碼 功能 sha 有一種 PHP基礎入門(二)——函數基礎 了解 PHP基礎入門詳解(一) 後,給大家分享一下PHP的函數基礎。 這部分主要講的就是: 函數的聲明與使用、PHP中變量的作用域、靜態變量、函數的參數傳遞、變量函數
開源性能測試工具JMeter快速入門(二)
代碼 取模 .bat -h 斷言 調度 測試 格式 needed 目錄一、JMeter簡介二、JMeter功能介紹三、JMeter腳本四、關於JMeter小提示三、JMeter腳本1.測試計劃測試計劃是JMeter進行測試的起點 ,是其他JMeter測試元件的容器,每個測試
02-Linux基礎入門(二)
... man sso term 創建文件系統 www. lease linux系統 結果 一、命令必須掌握的命令:man,touch,ls,mkdir,cp,rm,mv,echo,pwd,cat,alias,unalias,head,tail,tree,rmdir想拿到高