MyBatis學習總結(一)---簡單配置使用(基於XML方式實現CRUD以及加載配置文件的三種方式)

  一、Mybatis簡介

   Mybatis本是apache的一個開源項目iBatis, 2010年這個項目由apache software foundation 遷移到了google code,並且改名爲MyBatis 。

   MyBatis是一個支持普通SQL查詢,存儲過程和高級映射的優秀持久層框架。MyBatis消除了幾乎所有的JDBC代碼和參數的手工設置以及對結果集的檢索封裝。MyBatis可以使用簡單的XML或註解用於配置和原始映射,將接口和Java的POJO(Plain Old Java Objects,普通的Java對象)映射成數據庫中的記錄。

 二、簡單配置使用示例

   1.Mybatis可應用於普通JAVA項目或JAVAWeb項目中,此處我建立的是一個JAVAWeb項目,目錄結構如下:

      

      2.導入相應的jar包

        一個是mybatis的包,如:mybatis-3.4.6.jar;一個是數據庫的包,如:mysql-connector-java-5.1.37.jar 

       3.配置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>
    <!-- environments:信息配置的是連接數據庫的(數據源的)一些參數,如用戶名,密碼等,MyBatis數據庫操作的session就是根據這些信息初始化的-->
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<!-- 數據源配置 -->
			<dataSource type="POOLED">
			    <!-- 數據庫驅動 -->
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<!-- 數據庫連接URL  -->
				<property name="url" value="jdbc:mysql://localhost:3306/mybatisstudy?useUnicode=true&amp;characterEncoding=utf8"/>
				<!-- 數據庫用戶名和密碼 -->
				<property name="username" value="root" />
				<property name="password" value="" />
			</dataSource>
		</environment>
	</environments>
   <!-- mappers:配置的是一個個Mapper文件,這些文件來約束數據庫的信息(Relationship) 和 對象(Object)的信息映射(Mapper);它負責完成對象和數據庫表的映射,是ORM最具體的配置-->
	<mappers>
	    <!-- 配置實體映射文件 -->
		<mapper resource="com/mybatisstudy/mapper/userMap.xml" />
	</mappers>
</configuration>

   

   4.建表,如:

       

 

    5.編寫用於測試的實體類,如:

package com.mybatisstudy.model;

public class User {
	private int id;
	private String name;
	private String sex;
	private int age;

	public User() {
		super();
	}

	public User(String name, String sex, int age) {
		super();
		this.name = name;
		this.sex = sex;
		this.age = age;
	}

	public User(int id, String name, String sex, int age) {
		super();
		this.id = id;
		this.name = name;
		this.sex = sex;
		this.age = age;
	}

	public int getId() {
		return id;
	}

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

	public String getName() {
		return name;
	}

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

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	@Override
	public String toString() {
		return "[id:" + id + ",name:" + name + ",sex:" + sex + ",age:" + age + "]";
	}

}

     6.編寫該實體類的映射文件,注意需要在Mybatis的配置文件中引用該文件,如:

    

<?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.mybatisstudy.mapper.userMap">
	<select id="selectAllUser"
		resultType="com.mybatisstudy.model.User">
		SELECT * FROM user ;
	</select>
	
	<select id="selectUserById" parameterType="int" 
		resultType="com.mybatisstudy.model.User">
		SELECT * FROM user where id = #{id} ;
	</select>

	<insert id="addUser" parameterType="com.mybatisstudy.model.User">
		INSERT INTO user(id,name,sex,age) VALUES(#{id},#{name},#{sex},#{age});
	</insert>

	<delete id="deleteUserById" parameterType="com.mybatisstudy.model.User">
		DELETE FROM user WHERE id=#{id};
	</delete>
	
	
	<update id="updateUserById" parameterType="com.mybatisstudy.model.User">
		UPDATE user SET age=#{age} ,name=#{name}  WHERE id=#{id}
	</update>

</mapper>

     7.測試,如:

       其中加載Mybatis的配置文件的方式主要有三種,第一種是通過類加載器來加載;第二種是採用文件讀取的方式來加載;第三種是使用Mybatis提供的Resources類來進行加載。

       注意:對於涉及到增刪改數據時,需要手動進行提交(session.commit())。

package com.mybatisstudy.test;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.mybatisstudy.model.User;

public class Test {
	public static void main(String[] args) {

		// mybatis的配置文件
		String resource = "mybatisconf.xml";
		InputStream inputStream = null;

		// 方式一:使用類加載器加載mybatis的配置文件
		// inputStream = Test.class.getClassLoader().getResourceAsStream(resource);

		// 方式二:採用文件讀取的方式,讀取配置文件
		/*File file = new File("src/mybatisconf.xml");
		Reader reader = null;
		try {
			reader = new FileReader(file);
		} catch (FileNotFoundException e1) {
			e1.printStackTrace();
		}
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);*/

		// 方式三:使用MyBatis提供的Resouces類加載mybatis的配置文件
		try {
			inputStream = Resources.getResourceAsStream(resource);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		// 構建SqlSessionFacoty工廠
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

		// 創建session對象,並使用它來進行數據庫的各項 操作
		SqlSession session = sqlSessionFactory.openSession();

		// 根據Id查詢用戶
		String statement = "com.mybatisstudy.mapper.userMap.selectUserById";
		User user = session.selectOne(statement, 1001);
		System.out.println(user);

		// 查詢所有的用戶
		String statement2 = "com.mybatisstudy.mapper.userMap.selectAllUser";
		List<User> users = session.selectList(statement2);
		System.out.println(users);

		// 添加用戶信息
		User user2 = new User(1003, "小杰", "男", 20);
		String statement3 = "com.mybatisstudy.mapper.userMap.addUser";
		int line = session.insert(statement3, user2);
		// 對於增刪改,需要手動提交事務,才能將數據持久化,才能避免出現髒數據
		session.commit();

		// 修改用戶信息
		User user3 = new User(1003, "小明", "男", 21);
		String statement4 = "com.mybatisstudy.mapper.userMap.updateUserById";
		int line2 = session.update(statement4, user3);
		session.commit();

		// 刪除用戶信息
		String statement5 = "com.mybatisstudy.mapper.userMap.deleteUserById";
		int line3 = session.delete(statement5, 1003);
		session.commit();

		session.close();

	}
}

    8.結果:

    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章