寫在前面
這篇依然是參考寫的,一些基本的執行個體。下一篇打算自己總結,慢慢的摸索着寫了。
孤傲蒼狼的部落格: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();
}
}
}