1. 程式人生 > >第一章:Mybatis開發環境搭建,整合mysql資料庫

第一章:Mybatis開發環境搭建,整合mysql資料庫

一)開發前準備

mybatis-3.4.6.jar

mysql-connector-java-5.1.34-bin.jar

說明:在本章末尾有原始碼下載地址,裡面已包含jar

二)Mybatis開發環境搭建

1) 建立一個Dynamic Web Project,名稱為:xm-mybatis-one,專案結構圖如下:

2)建立員工實體檔案EmployeeEntity.java

package com.xm.mybatis.entity;

/**
 * 員工表 entity
 * @author ouyangjun
 *
 */
public class EmployeeEntity {
	
	private Integer empId;
	
	private String empName;
	
	private String empNO;
	
	private Long createDate;

	public Integer getEmpId() {
		return empId;
	}

	public void setEmpId(Integer empId) {
		this.empId = empId;
	}

	public String getEmpName() {
		return empName;
	}

	public void setEmpName(String empName) {
		this.empName = empName;
	}

	public String getEmpNO() {
		return empNO;
	}

	public void setEmpNO(String empNO) {
		this.empNO = empNO;
	}

	public Long getCreateDate() {
		return createDate;
	}

	public void setCreateDate(Long createDate) {
		this.createDate = createDate;
	}
	
}

3)建立員工實體對映檔案EmployeeEntity.xml

<?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="com.xm.mybatis.dao.EmployeeDAO">

	<insert id="addEmployee">
		insert into employee(emp_id,emp_name,emp_no,create_date)
		values(#{empId}, #{empName}, #{empNO}, #{createDate})
	</insert>
	
	<select id="getEmployeeByEmpId" parameterType="java.lang.String" resultType="employeeEntity">
		select 
			emp_id as empId,
			emp_name as empName,
			emp_no as empNO,
			create_date as createDate
		 from employee where emp_id = #{empId}
	</select>
	
	<update id="updateEmployee">
		
	</update>
	
	<!-- 
		foreach元素的屬性主要有 item,index,collection,open,separator,close。
		item表示集合中每一個元素進行迭代時的別名,
		index指 定一個名字,用於表示在迭代過程中,每次迭代到的位置,
		open表示該語句以什麼開始,
		separator表示在每次進行迭代之間以什麼符號作為分隔 符,
		close表示以什麼結束。
		collection
			1. 如果傳入的是單引數且引數型別是一個List的時候,collection屬性值為list, parameterType="java.util.List"
			2. 如果傳入的是單引數且引數型別是一個array陣列的時候,collection的屬性值為array, parameterType="java.util.ArrayList"
			3. 如果傳入的引數是多個的時候,我們就需要把它們封裝成一個Map了,當然單引數也可, parameterType="java.util.HashMap"
	 -->
	<delete id="deleteEmployeeEntityByEmpId" parameterType="java.util.ArrayList">
		delete from employee where 1=1
		and emp_Id in 
		<foreach collection="array" index="index" item="item" open="(" separator="," close=")">
			#{item}
		</foreach>
	</delete>
  	
</mapper>

4)建立員工介面檔案EmployeeDAO.java

package com.xm.mybatis.dao;

import com.xm.mybatis.entity.EmployeeEntity;

public interface EmployeeDAO {

	/**
	 * 根據empId獲取員工資訊
	 * @param empId
	 * @return
	 */
	EmployeeEntity getEmployeeByEmpId(String empId);
	
	/**
	 * 新增員工
	 * @param entity
	 * @return
	 */
	int addEmployee(EmployeeEntity entity);
	
	/**
	 * 根據empId修改使用者資訊
	 * @param empId
	 * @return
	 */
	int updateEmployee(EmployeeEntity entity);
	
	/**
	 * 根據empId刪除使用者
	 */
	int deleteEmployeeEntityByEmpId(String[] empIds);
	
}

5)建立mybatis核心配置檔案mybatis.cfg.xml。注:該檔名可隨意,在讀取配置時指定。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-config.dtd">
 
<configuration>
	
	<!-- 給全限定類名命個別名,減少xml實體類引用程式碼 -->
	<typeAliases>
		<!-- 方式一:給單個實體類名一個別名,在對應的xml中引用別名即可
		<typeAlias alias="employeeEntity" type="com.xm.mybatis.entity.EmployeeEntity"></typeAlias>
		-->
		
		<!-- 方式二:當有多個實體類的時候,引用實體類包名,實體類別人首字母預設小寫(如: employeeEntity)。如果實體類上有註解別名,以註解為準! -->
		<package name="com.xm.mybatis.entity"/>
	</typeAliases>

	<environments default="development">
		<environment id="development">
			<!-- type="JDBC" 表示使用JDBC的提交和回滾管理事務 -->
			<transactionManager type="JDBC" />
			
			<!-- mybatis提供了3種資料來源型別,分別是:POOLED,UNPOOLED,JNDI -->
			<!-- POOLED 表示支援JDBC資料來源連線池 -->
			<!-- UNPOOLED 表示不支援資料來源連線池 -->
			<!-- JNDI 表示支援外部資料來源連線池 -->
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://localhost:3306/xm" />
				<property name="username" value="root" />
				<property name="password" value="admin" />
			</dataSource>
		</environment>
	</environments>
	
	<mappers>
		<mapper resource="com/xm/mybatis/entity/EmployeeEntity.xml" />
	</mappers>
	
</configuration>

6)建立獲取SqlSessionFactory的工具類SessionUtils.java。通過單列模式實現。

package com.xm.mybatis.utils;

import java.io.IOException;
import java.io.Reader;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class SessionUtils {
	
	/**
	 * 內部類單列模式實現讀取mybatis配置檔案
	 * @author ouyangjun
	 */
	private static class LasyHolder {
		
		private static Reader READER = getReader();
		
		public static Reader getReader() {
			try {
				System.out.println("==>讀取mybatis.cfg.xml檔案中的配置!");
				// 讀取mybatis配置檔案
				return Resources.getResourceAsReader("mybatis.cfg.xml");
			} catch (IOException e) {
				System.out.println("==>讀取mybatis.cfg.xml檔案中的配置錯誤 error!");
				e.printStackTrace();
			}
			return null;
		}
	}
	
	/**
	 * 獲取配置檔案物件
	 * @return
	 */
	public static Reader getReader() {
		return LasyHolder.READER;
	}
	
	/**
	 * 執行緒本地配置宣告
	 */
	public static ThreadLocal<SqlSessionFactory> threadLocal = new ThreadLocal<SqlSessionFactory>();
	
	/**
	 * ThreadLocal獲取SqlSessionFactory
	 * @return
	 */
	public static SqlSessionFactory getSqlSessionFactory() {
		// 獲取sqlSessionFactory
		SqlSessionFactory sqlSessionFactory = threadLocal.get();
		
		System.out.println("sqlSessionFactory: " + sqlSessionFactory);
		if (sqlSessionFactory == null) {
			System.out.println("sqlSessionFactory is null 重新獲取SqlSessionFactory!");
			// 讀取mybatis配置檔案
			Reader reader = SessionUtils.getReader();
			
			// 重新建立SqlSessionFactory
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
			
			// 把sqlSessionFactory新增到ThreadLocal中
			threadLocal.set(sqlSessionFactory);
		}
		
		// 返回
		return sqlSessionFactory;
	}

}

7)新增員工新增測試類AddEmployeeTest.java,執行該方法之後可自行到mysql資料庫檢視。

package com.xm.mybatis.test;

import java.util.Date;

import org.apache.ibatis.session.SqlSession;

import com.xm.mybatis.dao.EmployeeDAO;
import com.xm.mybatis.entity.EmployeeEntity;
import com.xm.mybatis.utils.SessionUtils;

public class AddEmployeeTest {

	public static void main(String[] args) {
		// 獲取SqlSession
		SqlSession sqlSession = null;
		
		try {
			sqlSession = SessionUtils.getSqlSessionFactory().openSession();
			
			// 初始化介面
			EmployeeDAO employeeDAO = sqlSession.getMapper(EmployeeDAO.class);
			
			EmployeeEntity emp = new EmployeeEntity();
			emp.setEmpId(100000);
			emp.setEmpName("ouyangjun");
			emp.setEmpNO("333333");
			emp.setCreateDate(new Date().getTime());
			
			// 持久化
			employeeDAO.addEmployee(emp);
			
			emp = new EmployeeEntity();
			emp.setEmpId(200000);
			emp.setEmpName("xm");
			emp.setEmpNO("888888");
			emp.setCreateDate(new Date().getTime());
			
			// 持久化
			employeeDAO.addEmployee(emp);
			
			// 提交事務
			sqlSession.commit();
			
			System.out.println("==>員工資料持久化成功!");
		} catch (Exception e){
			e.printStackTrace();
			sqlSession.rollback();
			
			System.out.println("==>員工資料持久化失敗!");
		} finally {
			sqlSession.close();
			
			System.out.println("==>事務關閉!");
		}
	}

}

8)新增員工查詢測試類GetEmployeeTest.java

package com.xm.mybatis.test;

import java.io.IOException;

import org.apache.ibatis.session.SqlSession;

import com.xm.mybatis.dao.EmployeeDAO;
import com.xm.mybatis.entity.EmployeeEntity;
import com.xm.mybatis.utils.SessionUtils;

public class GetEmployeeTest {

	public static void main(String[] args) throws IOException {
		
		// 獲取SqlSession
		SqlSession sqlSession = SessionUtils.getSqlSessionFactory().openSession();
		
		// 初始化介面
		EmployeeDAO employeeDAO = sqlSession.getMapper(EmployeeDAO.class);
		
		EmployeeEntity entity = employeeDAO.getEmployeeByEmpId("100000");
		if(entity!=null){
			System.out.println(entity.getEmpId()+" "+entity.getEmpName()+" "+entity.getEmpNO());
		} else {
			System.out.println("根據empId未查詢到資料!");
		}
		
		System.out.println("----------測試SqlSessionFactory單列----------");
		
		sqlSession = SessionUtils.getSqlSessionFactory().openSession();
		// 初始化介面
		employeeDAO = sqlSession.getMapper(EmployeeDAO.class);
		entity = employeeDAO.getEmployeeByEmpId("100000");
		if(entity!=null){
			System.out.println(entity.getEmpId()+" "+entity.getEmpName()+" "+entity.getEmpNO());
		} else {
			System.out.println("根據empId未查詢到資料!");
		}
		
		sqlSession.close();
	}

}

查詢效果圖如下:

9)新增員工刪除測試類DeleteEmployeeTest.java

package com.xm.mybatis.test;

import java.io.IOException;

import org.apache.ibatis.session.SqlSession;

import com.xm.mybatis.dao.EmployeeDAO;
import com.xm.mybatis.utils.SessionUtils;

public class DeleteEmployeeTest {

	public static void main(String[] args) throws IOException {
		
		// 獲取SqlSession
		SqlSession sqlSession = null;
		
		try {
			sqlSession = SessionUtils.getSqlSessionFactory().openSession();
			
			// 初始化介面
			EmployeeDAO employeeDAO = sqlSession.getMapper(EmployeeDAO.class);
			
			String[] empIds = {"100000","200000"};
			employeeDAO.deleteEmployeeEntityByEmpId(empIds);
			
			sqlSession.commit();
			
			System.out.println("==>員工資料刪除成功!");
		} catch (Exception e){
			e.printStackTrace();
			sqlSession.rollback();
			
			System.out.println("==>員工資料刪除失敗!");
		} finally {
			sqlSession.close();
			
			System.out.println("==>事務關閉!");
		}
	}

}

本章完結,待續!

                      碼雲賬戶: [email protected]     密碼: [email protected]

                      請勿惡意操作,謝謝!

本文說明:該文章屬於原創,如需轉載,請標明文章轉載來源

相關推薦

第一Mybatis開發環境搭建整合mysql資料庫

一)開發前準備 mybatis-3.4.6.jar mysql-connector-java-5.1.34-bin.jar 說明:在本章末尾有原始碼下載地址,裡面已包含jar 二)Mybatis開發環境搭建 1) 建立一個Dynamic Web Project,名稱

第一在IDEA裡搭建基於Forge的Minecraft mod開發環境

<基於1.8 Forge的Minecraft mod製作經驗分享> 網上關於Forge開發環境搭建的文章其實有不少,但大都是基於Eclipse的。 作為用Java開發的環境,怎麼能沒有IDEA神器的支援呢。 廢話不多說,上步驟: 首先你應該已經裝好

第一es6開發環境搭建

index 項目結構 json dev 技術 reset ID .com 分享 第一章:es6開發環境的搭建   命令:npm init -y 生成package.json文件(依賴文件);項目結構如下: 全局安裝 babel-cli 命令如下:npm instal

ESP32系列教程《入門篇ESP32開發環境搭建優化》windows下開發速度堪比Linux

github教程地址: 優化一:https://github.com/xiaolongba/wireless-tech/blob/master/%E8%BD%AF%E4%BB%B6/%E7%BA%A2%E6%97%AD%E6%97%A0%E7%BA%BF%E5%BC%80%E5%8F%91%

Python爬蟲學習==>第一Python3+Pip環境配置

sof 環境 pts window https 有時 naconda 步驟 管家 前置操作 軟件名:anaconda 版本:Anaconda3-5.0.1-Windows-x86_64清華鏡像 下載鏈接:https://mirrors.tuna.tsinghua.ed

第2次作業基礎開發環境搭建

convert 第一部分 block 自己的 https .com 開發環境 war loader 第2次作業:基礎開發環境搭建 第一部分:我的本次作業成果 我自己個人的github地址是:Abel202我們開發團隊小組的github地址是:SoftwareEngin

win10的react native 開發環境搭建使用Android模擬器

1.開啟cmd的管理員模式,win+X,選擇命令提示符(管理員)即可,執行如下命令: @"%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy

Java程式設計師從笨鳥到菜鳥之(一)開發環境搭建基本語法字串陣列

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

【VUE】Mac下vue 開發環境搭建以及目錄結構

1 安裝Node.js    參看 node.js環境安裝   http://www.cnblogs.com/richerdyoung/p/7265786.html   2 安裝淘寶映象 sudo npm ins

第1篇Java開發環境搭建

這裡僅以windows為例 1. 下載安裝JDK 下載地址:https://www.oracle.com/technetwork/java/javase/downloads/index.html 2. 配置環境變數 右鍵 “我的電腦” --> 屬性 --

海思開發環境搭建編譯整個osdrv

1、開發環境 windows10電腦 + 虛擬機器14 Pro + Ubuntu16.0.4 2、拷貝並解壓。將 Hi3518E_SDK_V1.0.3.0.tgz拷貝到 Linux 伺服器上。 cd ~/sambashare/ cp /mnt/hgfs/w

ESP32_Lyrat開發環境搭建安裝IDF與ADF燒入demo播放一段音訊

前言 前段時間入手了ESP32_Lyrat開發板,但是網上資料少之又少,經過自身一番摸索後完成了開發環境搭建以及demo燒錄,這裡僅作分享,做拋磚引玉之用,有錯誤之處望不吝賜教。 參考文件 開發環境 Windows(Linux步驟大致相同) 準備檔案

ESP32系列教程《入門篇ESP32開發環境搭建》--Windows下使用VScode搭建ESP32開發環境

github地址:https://github.com/xiaolongba/wireless-tech 如何搭建ESP32開發環境 前言 ESP32是樂鑫在其上一代ESP8266一炮而紅之後,推出的第二代高性價比的產品,ESP32在上一代的基礎上增加了藍芽4.2的功能,加上

本機開發環境搭建java

本機環境說明 本機環境:win7 64位。需要進行的工作:對一個前後端不分離,採用springmvc框架的專案專案進行二次開發,版本管理使用git。 需要安裝的軟體 JDK1.8,整合開發環境(STS或者Eclipse),mysql5.7, navicat f

樹莓派開發筆記(二)qt開發環境搭建樹莓派qt編譯和宿主機qt交叉編譯

樹莓派開發筆記(二):qt開發環境搭建:樹莓派qt編譯和宿主機qt交叉編譯前話        前面已經成功執行樹莓派,下面使用qt開發樹莓派產品。搭建樹莓派qt編譯環境(不推薦:開發編譯速度慢)        安裝樹莓派的桌面版本,可以直接配置qt環境,此種方法總是卡卡的,所

我的openwrt學習筆記(二)OpenWrt 開發環境搭建

首先我們首選的OpenWrt 編譯環境是 Ubuntu,並且應儘量選擇穩定的LTS版本,而不是更高版本的。這裡我們推薦使用 Ubuntu 12.04 LTS或者Ubuntu 14.04 LTS作為編譯平臺,此平臺必須要能穩定地接入網路。我們推薦您使用以下或更高的硬體配置:

mybatis開發環境搭建

1.把需要的jar包匯入到工程中,我用到的是這兩個jar包。 2.在mysql中建立一個測試用資料庫以及在該資料庫中建表插入一條資料。 3.在工程中建立一個pakage命名為model,model中是與資料庫對應的類以及一個對映檔案xml。 4.建立配置檔案Configu

JFinal開發環境搭建JFinal開發案例

JFinal  是基於 Java  語言的極速  WEB  + ORM  開發框架,其核心設計目標是開發迅速、程式碼量少、學習簡單、功能強大、輕量級、易擴充套件、Restful。在擁有Java 語言

EOS開發環境搭建如何編譯安裝構建EOSIO

獲取程式碼 下載所有的EOSIO程式碼,clone eos庫和所有的子模組。 shell 命令如下: git clone https://github.com/EOSIO/eos --recursive 如果忘記加 --recursive 引數也沒關

mybatis 開發環境搭建

不說廢話直接上程式碼,首先看下我的目錄機構: 紅色部分,表明你所需的jar包,已經配置檔案. 建立使用者表,以及插入資料. create table books(id int (11) not