1. 程式人生 > >MyBatis的資料庫操作入門(二)

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想拿到高