1. 程式人生 > >MyBatis學習(二)--基本CRUD操作例項

MyBatis學習(二)--基本CRUD操作例項

寫在前面
這篇依然是參考寫的,一些基本的例項。下一篇打算自己總結,慢慢的摸索著寫了。
孤傲蒼狼的部落格:https://www.cnblogs.com/xdp-gacl/category/655890.html
程式碼中會有很多重要的註釋,請不要忽略。

使用MyBatis進行基本的CRUD

CRUD 就是平時說的增刪查改,這篇都是用xml的方式實現。暫時不想寫介面的方式,個人覺得放在後邊比較合適。

接上一篇文章中的UserMapper.xml,先對映sql。
根據語句寫對應的標籤,雖然最後識別是sql語句為準,標籤是無所謂的,還是應該按照規範寫。

<?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.project.mapper.UserBeanMapper"> <select id="getUser" resultType="UserBean"> SELECT * FROM user; </select> <!--parameterType 表示傳入的引數型別,這裡UserBean是上一篇文章中設定的物件的別名 這裡也可以是一些其他型別,或者基本型別 int String #{u_account} 是在取bean物件屬性的值,一定要和屬性名一致 如果傳入的引數的基本型別,可以隨便寫名字。 注:除了#{},還有一種寫法${},簡單說下區別: 1. $ 是直接在拼接sql -- statement 2. # 是引數化sql -- preparestatement -->
<insert id="insertUser" parameterType="UserBean"> INSERT INTO user(u_account,u_password) VALUES(#{u_account},#{u_password}); </insert> <!-- 根據物件中的賬號修改密碼 --> <update id="updateUser" parameterType="UserBean"> UPDATE user SET u_password = #{u_password} WHERE u_account = #{u_account}; </
update
>
<!-- 根據賬號刪除使用者 --> <delete id="deleteUser" parameterType="String"> DELETE FROM user WHERE u_account = #{account}; </delete> </mapper>

測試類程式碼

package com.project.mian;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.junit.jupiter.api.Test;

import com.project.bean.UserBean;
import com.project.mybatis.util.MyBatisUtil;

public class MainClass {
	
	@Test
	public void select() {
		SqlSession session = MyBatisUtil.getSqlSession();
		try {
			List<UserBean> users = session.selectList("com.project.mapper.UserBeanMapper.getUser");
			for (UserBean user : users) {
				System.out.println(user);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			session.close();
		}
	}
	
	@Test
	public void insert() {
		SqlSession session = MyBatisUtil.getSqlSession();
		UserBean user = new UserBean();
		user.setU_account("acc_3");
		user.setU_password("123456");
		try {
			//第一個引數是mapper名稱空間名加上標籤的id
			//第二個引數就是在標籤中寫的型別
			//方法會返回值一個int值,就是資料庫中的影響行數
			int len = session.insert("com.project.mapper.UserBeanMapper.insertUser",user);
			System.out.println("影響行數:"+len);
			//預設情況下,insert、update、delete都不會自動提交,需要顯示呼叫
			session.commit();
		} catch (Exception e) {
			//如果發生異常則回滾
			session.rollback();
			e.printStackTrace();
		}finally {
			session.close();
		}
	}
	
	@Test
	public void update() {
		UserBean user = new UserBean();
		user.setU_account("acc_3");
		user.setU_password("654321");
		SqlSession session = MyBatisUtil.getSqlSession();
		try {
			int len = session.update("com.project.mapper.UserBeanMapper.updateUser", user);
			System.out.println(len);
			session.commit();
		} catch (Exception e) {
			e.printStackTrace();
			session.rollback();
		}finally {
			session.close();
		}
	}
	
	@Test
	public void delete() {
		SqlSession session = MyBatisUtil.getSqlSession();
		try {
			int len = session.delete("com.project.mapper.UserBeanMapper.deleteUser","acc_3");
			System.out.println(len);
			session.commit();
		} catch (Exception e) {
			e.printStackTrace();
			session.rollback();
		}finally {
			session.close();
		}
	}
	
	
}