1. 程式人生 > >Mybatis教程2【配置檔案】

Mybatis教程2【配置檔案】

MyBatis 的配置檔案包含了會深深影響 MyBatis 行為的設定(settings)和屬性(properties)資訊。文件的頂層結構如下

configuration 配置
    properties 屬性
    settings 設定
    typeAliases 類型別名
    typeHandlers 型別處理器
    objectFactory 物件工廠
    plugins 外掛
    environments 環境
        environment 環境變數
            transactionManager 事務管理器
            dataSource 資料來源
    databaseIdProvider 資料庫廠商標識
    mappers 對映器

properties

配置一些常見變數,類似於spring中placeholder的作用。一般可以用來引入資料庫配置、 在這裡插入圖片描述

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/ssm
username=root
password=123456

在這裡插入圖片描述

typeHandlers

ypeHandlers稱做型別處理器。就是實現Java型別和資料庫型別之間轉換的。 除了系統提供的型別轉換器之外,開發者也可以自定義型別轉換,如下:

例如List<—>VARCHAR之間的型別轉換:

自定義轉換器

package com.sxt.myList;

import java.sql.CallableStatement;
import java.sql.JDBCType;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Arrays;
import java.util.List;

import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.MappedJdbcTypes;
import org.apache.ibatis.type.MappedTypes;
/**
 * 自定義轉換器,集合,字串
 * @author Administrator
 *
 */
@MappedJdbcTypes(JdbcType.VARCHAR)
@MappedTypes(List.class)
public class MyList extends BaseTypeHandler<List<String>>{
	/**
	 * 將集合資料轉換成字元床
	 */
	@Override
	public void setNonNullParameter(PreparedStatement ps, int i, List<String> parameter, JdbcType jdbcType)
			throws SQLException {
		StringBuilder sb = new StringBuilder();
		for (String s : parameter) {
			sb.append(s).append(";");
		}
		String msg = sb.toString();
		ps.setString(i, msg);
		
	}
	/**
	 * 從集合裡取出字串轉換成集合
	 */
	@Override
	public List<String> getNullableResult(ResultSet rs, String columnName) throws SQLException {
		String st = rs.getString(columnName);
		return Arrays.asList(st.split(";"));
	}

	@Override
	public List<String> getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
		String st = rs.getString(columnIndex);
		return Arrays.asList(st.split(";"));
	}

	@Override
	public List<String> getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
		// TODO Auto-generated method stub
		return null;
	}

}

bean層

package com.sxt.bean;

import java.util.List;

public class Student {
	private Integer id;
	
	private String name;
	
	private List<String> games;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public List<String> getGames() {
		return games;
	}

	public void setGames(List<String> games) {
		this.games = games;
	}

	@Override
	public String toString() {
		return "Student [id=" + id + ", name=" + name + ", games=" + games + "]";
	}
}

對映檔案

<?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.sxt.dao.StudentDao">
	<select id="query" resultType="student">
				select * from t_student
	</select>
	<insert id="add" parameterType="student">
	insert into t_student(name,games)values(#{name},#{games})
	</insert>
	
	
</mapper>

介面【和對映檔案在同級目錄下名字相同】

package com.sxt.dao;

import java.util.List;

import com.sxt.bean.Student;

public interface StudentDao {
	public List<Student> query();
	
	public int add(Student stu);
}

配置mybatis配置檔案【裡面的配置檔案下面詳解】

<?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>
	<properties resource="db.properties" />
	<typeAliases>
		<package name="com.sxt.bean" />
	</typeAliases>
	<typeHandlers>
		<typeHandler handler="com.sxt.myList.MyList" />
	</typeHandlers>
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="${driver}" />
				<property name="url" value="${url}" />
				<property name="username" value="${username}" />
				<property name="password" value="${password}" />
			</dataSource>
		</environment>
	</environments>
	<!-- 註冊對映檔案 -->
	<mappers>
		<package name="com.sxt.dao" />
	</mappers>
</configuration>

在這裡插入圖片描述

mapper註冊對映檔案

對映器:我們新增的SQL語句的對映檔案要被配置檔案能夠發現,在自動發現方面mybatis在這方面並沒有實現,所以我們需要通過mapper標籤來關聯對映檔案。

方式一:一個個掃描

  <!-- 註冊對映檔案 -->
  <mappers>
  	<mapper resource="com/sxt/dao/UserMapper.xml"/>
  </mappers>

這種配置方式,對mapper的檔名沒有要求

方式二:掃描包 更簡單更常用的方式,則是通過包掃描去載入mapper檔案,這個時候對mapper檔名有要求,要求mapper檔名和mapper介面必須一致。

  <!-- 註冊對映檔案 -->
  <mappers>
  	<!-- <mapper resource="com/sxt/dao/UserMapper.xml"/> -->
  	<package name="com.sxt.dao"/>
  </mappers>

自定義別名對映

  <typeAliases>
  	<typeAlias type="com.sxt.bean.User" alias="user"/>
  </typeAliases>

在這裡插入圖片描述 可以批量掃描,自動生成別名,自動生成的別名是型別或者類名首字母小寫

  <typeAliases>
  	<!-- <typeAlias type="com.sxt.bean.User" alias="user"/> -->
  	<package name="com.sxt.bean"/>
  </typeAliases>

注意自定義的別名使用的時候不區分大小寫

測試

@Test
	public void query() {
		SqlSession session = Dbutils.getSession();
		StudentDao mapper = session.getMapper(StudentDao.class);
		//查詢
		List<Student> query = mapper.query();
		System.out.println(query);
		//新增
		Student user = new Student();
		user.setName("zhangsan");
		user.setGames(Arrays.asList("x","m","n"));
		mapper.add(user);
		session.commit();
		session.close();
	}

在這裡插入圖片描述 在這裡   
 
 </div> 
 <div class=

相關推薦

Mybatis教程2配置檔案

MyBatis 的配置檔案包含了會深深影響 MyBatis 行為的設定(settings)和屬性(properties)資訊。文件

MyBatis教程3對映檔案和動態sql

1.logj 在程式的執行的過程中為了便於查詢sql的輸出,需要引入logj新增依賴 <dependency> &l

Redis使用入門(一)配置檔案

redis.windows.conf內容如下: # redis 配置檔案示例 # 當你需要為某個配置項指定記憶體大小的時候,必須要帶上單位, # 通常的格式就是 1k 5gb 4m 等醬紫: # # 1k => 1000 bytes # 1kb =&

mybatis教程1基本使用

什麼是MyBatis? MyBatis 是一款優秀的持久層框架,它支援定製化 SQL、儲存過程以及高階對映。MyBatis 避免了

JBOSS4.2啟動時報錯配置檔案不可讀

一、問題                       二、原因分析 &n

webpack4.0命令列模式下不用配置檔案打包教程傻瓜教程

解決問題 解決webpack4.0預設是從src目錄下尋找index.js然後輸出到dist目錄中的main.js。很多同學用命令列在這裡會踩很多坑。今天我來徹底解決這個問題。很簡單。 初始化 新建一個目錄 mkdir wpdemo 進入

MyBatis(2)-全域性配置檔案

1)配置檔案的安裝 --->未聯網:去mybatis的jar包->org.apache.ibatis.builder.xml->資料夾下的兩個.dtd檔案解壓                     點選選中我們的dtd地址選中->preferences->XML->X

python-ConfigParser模組讀寫配置檔案

以下的文章就是對python 讀寫配置檔案的具體方案的介紹 1,函式介紹 1.1.讀取配置檔案 -read(filename) 直接讀取ini檔案內容 -sections() 得到所有的section,並以列表的形式返回 -options(section) 得到

ClickHouse學習系列之三配置檔案說明

背景       最近花了些時間看了下ClickHouse文件,發現它在OLAP方面表現很優異,而且相對也比較輕量和簡單,所以準備入門瞭解下該資料庫系統。在介紹了安裝和使用者許可權管理之後,本文對其配置檔案做下相關的介紹說明。 說明       Cl

springboot讀取配置檔案@ConfigurationProperties、@PropertySource和@Value

### 概念: - @ConfigurationProperties : 是springboot的註解,用於把主配置檔案中配置屬性設定到對於的Bean屬性上 - @PropertySource :是spring的註解,用於載入指定的屬性配置檔案到Spring的Environment中,可以和 @V

Codeforces 633C Spy Syndrome 2 Trie樹+DFS

print net bool void bre ret 給定 pri mar <題目鏈接> 題目大意:給定一個只有小寫字母組成的目標串和m個模式串(裏面可能有大寫字母),記目標串反過來後的串為S,讓你從m個模式串中選出若幹個組成S串(不區分大小寫)。輸出任意一

一步步完善rootfs:2.建立配置檔案

建立配置檔案 核心啟動到最後啟動的第一個使用者程序是init程序,它根據檔案系統下的配置檔案決定啟動哪些程式,init程序是後續所有程序的發起者。 /etc 目錄用於存放系統中的配置檔案,基本上所有的配置檔案都可以在這裡找到,這些檔案一般都以XXX.conf的形式命名,通過編輯這些檔案可

2配置檔案config.properties及瀏覽器啟動

配置檔案如下: 瀏覽器啟動選擇: 新建BrowserEngine.java檔案,程式碼如下: package framework;import java.io.FileInputStream;import java.io.IOException;import java.io.InputSt

轉:ssm spring+springmvc+mybatis中的xml配置檔案詳解

這幾天一直在整合SSM框架,雖然網上有很多已經整合好的,但是對於裡面的配置檔案並沒有進行過多的說明,很多人知其然不知其所以然,經過幾天的搜尋和整理,今天總算對其中的XML配置檔案有了一定的瞭解,所以拿出來一起分享一下,希望有不足的地方大家批評指正~~~ 首先   這篇文章暫時只對框架中所要用到的配

spring整合springmvc和mybatis中的基本配置檔案

1  父工程統一管理依賴的porm.xml檔案 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLoca

log4j 2讀取配置檔案的三種方法

log4j 2讀取配置檔案的三種方法。 log4j 2讀取的配置檔案可以分為三類:src下的配置檔案、絕對路徑的配置檔案、相對路徑的配置檔案。我們一一給例子。直接看程式碼:   package com.herman.test;   impor

django 2.x + celery 4.2.x 配置檔案 設定

django 2.x + celery 4.2.x配置 模組 celery==4.2.1 django-celery-beat==1.1.1 django-celery-results==1.0.1 kombu==4.2.1 配置 __init__.py from __future__ import

MyBatis基本要素---核心配置檔案

今天就簡單的敘述下MyBatis的核心配置檔案吧~~      configuration  配置      properties  可以配置在java屬性配置檔案中      set

SpringBoot和Mybatis整合二(基於配置檔案)

專案結構: EmployeeMapper: package com.lucifer.springboot.mapper; import com.lucifer.springboot.bea

《Hadoop技術內幕:深入解析Hadoop和HDFS》2.1配置檔案簡介

2.1 配置檔案簡介 配置檔案是一個靈活系統不可缺少的一部分,雖然配置檔案非常重要,但卻沒有標準。 本節我們來了解 Windows 作業系統和 Java 環境中的配置檔案。 2.1.1 Windows 作業系統的配置檔案 Windows 系統廣泛使用一種特殊化的 AS