MyBatis如何使用

一、什麼是MyBatis?

MyBatis源自Apache的iBatis開源項目, 從iBatis3.x開始正式更名爲MyBatis。它是一個優秀的持久層框架。
官網地址:http://www.mybatis.org/mybatis-3/

二、爲什麼使用MyBatis?

爲了和數據庫進行交互,通常的做法是將SQL語句寫在Java代碼中,SQL語句和Java代碼耦合在一起不利於後期維護修改,而MyBatis能夠幫助我們將SQL語句和Java代碼分離,方便了後期因需求變動而對SQL語句進行修改。

三、如何使用MyBatis:

一、準備:
1、下載MyBatis相應jar包:https://github.com/mybatis/mybatis-3/releases。
2、創建工程,導入MyBatis jar包(mybatis-3.4.4.jar)和數據庫驅動包。
在這裏插入圖片描述
3、在數據庫中創建user_info表並添加數據:
在這裏插入圖片描述
4、創建UserInfo類,代碼如下:

package com.jd.vo;

public class UserInfo {

	private int id;
	private String name;
	private String mobile;
	private String address;
	
	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 getMobile() {
		return mobile;
	}
	public void setMobile(String mobile) {
		this.mobile = mobile;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
}

二、使用:
1、在com.jd.userInfo.dao包創建IUserInfoDao接口,代碼如下:

package com.jd.userInfo.dao;

import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.jd.vo.UserInfo;

public interface IUserInfoDao {

	//@Param("id")強制控制#{}中只能是id
	String getById(@Param("id")int id);
	
	UserInfo selectById(@Param("id")int id);
	
	List<UserInfo> select(@Param("name")String name);
	
	boolean delete(@Param("id")int id);
}

2、創建名爲mybatis-config.xml的xlm文件進行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 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://127.0.0.1:3306/test" />
				<property name="username" value="root" />
				<property name="password" value="root" />
			</dataSource>
		</environment>
	</environments>
	<!-- 註冊Mapper xml文件 -->
	<mappers>
		<mapper resource="user_info.xml" />
	</mappers>
</configuration>

3、創建名爲user_info.xml的xml文件(與mybatis-config.xml的<mapper resource="user_info.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">
<!-- namespace:命名空間; -->
<mapper namespace="com.jd.userInfo.dao.IUserInfoDao">
	<!-- id:接口中定義的抽象方法名;resultType:返回值類型; -->
	<select id="getById" resultType="java.lang.String">
		<!-- #{id}:從傳遞過來的參數中取出id值,#{}可以防止SQL注入 -->
		select name from user_info where id = #{id}
	</select>
	
	<select id="selectById" resultType="com.jd.vo.UserInfo">
		select id,name,mobile,address from user_info where id = #{id}
	</select>
	
	<!-- list集合返回值類型爲其泛型的類型 -->
	<select id="select" resultType="com.jd.vo.UserInfo">
		select id,name,mobile,address from user_info where name like #{name}
	</select>
	
	<!-- 刪除用delete -->
	<delete id="delete" >
		delete from user_info where id = #{id}
	</delete>
</mapper>

4、創建Test測試類,代碼如下:

package com.jd.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.jd.userInfo.dao.IUserInfoDao;
import com.jd.vo.UserInfo;

public class Test {

	public static void main(String[] args) {
		try {
			InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
			//獲取SqlSessionFactory對象
			SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
			//獲取SqlSession對象,代表與數據庫的一次會話,用完需要關閉。注意:由於SqlSession爲非線程安全的,所以該變量應定義爲局部變量,不要定義成全局變量。
			SqlSession sqlSession = sqlSessionFactory.openSession();
			//獲取IUserInfo接口實現類對象
			IUserInfoDao userInfoDao = sqlSession.getMapper(IUserInfoDao.class);
			//調用getById方法獲取name並輸出
			System.out.println(userInfoDao.getById(3));
			//調用selectById方法獲取userInfo對象
			UserInfo userInfo = userInfoDao.selectById(3);
			System.out.println(userInfo.getName()+userInfo.getAddress());
			//模糊查找,傳入數據時這樣寫:%查找的數據%
			for (UserInfo ui : userInfoDao.select("%m%")) {
				System.out.println(ui.getName()+ui.getAddress());
			}
			System.out.println(userInfoDao.delete(3));
			//事務提交,刪除操作需要事務進行提交才能修改成功。
			sqlSession.commit();
			sqlSession.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

輸出結果:

Kitty
Kitty河南省鄭州市二七區
Moon北京市海淀區
Mey河南省漯河市
true

至此,完成了MyBatis查刪操作。

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