Mybatis學習筆記一

1.概念

Mybatis是一款優秀的數據持久層框架,是ORM(Object Relational Mapping)的具體實現。那ORM是什麼呢?簡單來說就是將面向對象程序中的對象持久化到關係型數據庫中。Mybatis通過XML或註解,將程序中的接口或POJO對象映射到數據庫中。

2.入門

1)新建java項目,添加mybatis-x.x.x.jar文件引用,如果使用mysql數據庫,則需要添加mysql-connector-xxx.jar文件;

2)新建xml配置文件conf.xml,作爲mybatis的核心配置文件,其中包括數據庫連接實例的數據源、事務控制方式(TransactionManagement)、註冊的映射文件等信息
<?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配置節中包括數據源,事務控制方式 -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <!-- 配置數據庫連接信息 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
                <property name="username" value="root" />
                <property name="password" value="123456" />
            </dataSource>
        </environment>
    </environments>
</configuration>


3)mysql數據庫中創建表及數據
CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
INSERT INTO `users` VALUES (1,'蒙牛',4),(2,'伊利',5);
4)創建數據類User
package com.lpq.domain;
public class User {
	private int id;
	private String name;
	private int 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 int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
	}
	
}


5)創建映射文件包及映射文件UserMapper.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.lpq.mapping.UserMapper">
	<select id="selectUser" resultType="com.lpq.domain.User">
		select * from users where id=#{id}
	</select>
</mapper>


6)在mybatis配置文件conf.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>
	<!-- environments配置節中包括數據源,事務控制方式 -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <!-- 配置數據庫連接信息 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
                <property name="username" value="root" />
                <property name="password" value="123456" />
            </dataSource>
        </environment>
    </environments>
    <!--mappers配置節中包含 註冊映射文件 -->
    <mappers>
    	<!-- 映射文件的路徑 -->
    	<mapper resource="com/lpq/mapping/UserMapper.xml"></mapper>
    </mappers>
</configuration>


7)利用映射文件訪問數據庫
Mybatis應用過程中有三個重要的類,SqlSessionFactory,SqlSessionFatoryBuilder,SqlSession
SqlSessionFactory:每個Mybatis應用都是以SqlSessionFactory爲核心的,在應用運行期間一直存在,不需消除或重建,最好採用單例模式。
SqlSessionfactoryBuilder:利用mybatis配置文件來創建SqlSessionFactory,創建完成之後即可銷燬;
SqlSession:通過SqlSessionFactory產生,每個線程都會創建單獨的SqlSeesion,它不是線程安全的,不能再線程間共享,數據操作完畢後,需要在finally中及時關閉SqlSession;
在進行增刪改操作時必須使用sqlSession.commit()來手動提交事務
package com.lpq.test;

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;

import com.lpq.domain.User;
import com.lpq.mapping.UserMapper;

public class TestClass {

	public static void main(String[] args) throws IOException {
		//mybatis配置文件的完整路徑,當前conf,xml在根目錄下
		String resource="conf.xml";
		//使用mybatis的Resources工具類讀取配置文件
		InputStream inputStream=Resources.getResourceAsStream(resource);
		SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
		
		//方式一:使用SqlSession訪問數據有兩種方式
		SqlSession session=sqlSessionFactory.openSession();
		try{
			User user=(User)session.selectOne("com.lpq.mapping.UserMapper.selectUser", 2);
			System.out.println(user);
		}finally{
			session.close();
		}
		
		//方式二:使用映射器接口UserMapper,接口中的方法跟映射文件中內容保持一致,這種方式不需要類型轉換
//		SqlSession session=sqlSessionFactory.openSession();
//		try{
//			UserMapper mapper=session.getMapper(UserMapper.class);
//			User user=mapper.selectUser(1);
//			System.out.println(user);
//		}finally{
//			session.close();
//		}
	}
}












發佈了73 篇原創文章 · 獲贊 18 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章