mybatis02--增删改查
生活随笔
收集整理的這篇文章主要介紹了
mybatis02--增删改查
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.修改StudentDao
public interface StudentDao {/*** 新增學生信息*/void addStudent(Student student);// 新增完畢之后有IDvoid addStudentCacheId(Student student);// 刪除學生信息void deleteStudent(Integer id);// 修改void updateStudent(Student student);// 查詢所有List<Student> selectAllStudents();// 查詢出來的是一個map集合Map<String, Object> selectAllStudentsMap();// 查詢指定的Student selectById(Integer id);// 根據姓名模糊查詢List<Student> selectByName(String name); }2.修改StudentMapper
<?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="student"><!--新增學生 --><insert id="addStudent" parameterType="Student">insert intostudent(age,name) values(#{age},#{name})</insert><insert id="addStudentCacheId" parameterType="Student">insert intostudent(age,name) values(#{age},#{name})<selectKey resultType="int" keyProperty="id" order="AFTER">select@@identity</selectKey></insert><!--刪除 deleteStudent --><delete id="deleteStudent"><!--#{sa} sa僅僅就是一個占位符 寫成什么都是可以的 -->delete from student where id=#{sa}</delete><!--修改updateStudent --><update id="updateStudent"><!-- 這里面的{}必須是和實體類中的屬性名一致 -->update student set name=#{name},age=#{age},id=#{id}where id=#{id}</update><!-- 查詢所有 list 必須指定返回值的類型resultType是一個學生對象 不然底層沒法封裝 --><select id="selectAllStudents" resultType="Student">select id,name,agefrom student</select><!-- 查詢指定id學生信息 xxx還是占位符 --><select id="selectById" resultType="Student">select * from student whereid=#{xxx}</select><!-- 模糊查詢 --><select id="selectByName" resultType="Student"><!-- 01.這種肯定不行 select * from student where name like '%2%' --><!-- 02. select * from student where name like concat('%',#{xxx},'%') --><!-- 03. 使用的是動態參數綁定 底層走的是preparedStatement 常用 select * from student where name like '%' #{xxx} '%' --><!-- 04. 這種底層是使用了Statement 不安全 用戶可以sql注入 select * from student where name like '%${value}%' --></select> </mapper>3.修改StudentDaoImpl
public class StudentDaoImpl implements StudentDao {SqlSession session = null;/*** 新增學生信息*/public void addStudent(Student student) {try {// 通過工具類獲取sessionsession = SessionUtil.getSession();/*** "addStudent" 要和mapper.xml文件中的id一致* 增刪改 操作 底層 執行的都是update方法 */session.insert("addStudent", student);// 必須手動讓session提交 底層默認就提交了事務session.commit();} catch (Exception e) {e.printStackTrace();} finally {if (session != null) {session.close(); // 關閉session}}}public void addStudentCacheId(Student student) {try {// 通過工具類獲取sessionsession = SessionUtil.getSession();session.insert("addStudentCacheId", student);// 必須手動讓session提交 底層默認就提交了事務session.commit();} catch (Exception e) {e.printStackTrace();} finally {if (session != null) {session.close(); // 關閉session}}}// 刪除public void deleteStudent(Integer id) {try {// 通過工具類獲取sessionsession = SessionUtil.getSession();session.delete("deleteStudent", id);// 必須手動讓session提交 底層默認就提交了事務session.commit();} catch (Exception e) {e.printStackTrace();} finally {if (session != null) {session.close(); // 關閉session}}}// 修改學生信息public void updateStudent(Student student) {try {// 通過工具類獲取sessionsession = SessionUtil.getSession();session.update("updateStudent", student);// 必須手動讓session提交 底層默認就提交了事務session.commit();} catch (Exception e) {e.printStackTrace();} finally {if (session != null) {session.close(); // 關閉session}}}// 查詢返回list集合public List<Student> selectAllStudents() {List<Student> students = new ArrayList<Student>();try {// 通過工具類獲取sessionsession = SessionUtil.getSession();students = session.selectList("selectAllStudents");// 查詢就不需要提交事務了} catch (Exception e) {e.printStackTrace();} finally {if (session != null) {session.close(); // 關閉session}}return students;}// 返回map集合public Map<String, Object> selectAllStudentsMap() {Map<String, Object> students = new HashMap<String, Object>();try {// 通過工具類獲取sessionsession = SessionUtil.getSession();// 還是之前list的方法 但是 key放什么? key必須是查詢出來實體類的屬性值students = session.selectMap("selectAllStudents", "name");// 查詢就不需要提交事務了} catch (Exception e) {e.printStackTrace();} finally {if (session != null) {session.close(); // 關閉session}}return students;}// 根據id查詢指定的學生信息public Student selectById(Integer id) {Student students = null;try {// 通過工具類獲取sessionsession = SessionUtil.getSession();// 還是之前list的方法 但是 key放什么? key必須是查詢出來實體類的屬性值students = session.selectOne("selectById", id);// 查詢就不需要提交事務了} catch (Exception e) {e.printStackTrace();} finally {if (session != null) {session.close(); // 關閉session}}return students;}// 根據name模糊查詢 返回list集合public List<Student> selectByName(String name) {List<Student> students = new ArrayList<Student>();try {// 通過工具類獲取sessionsession = SessionUtil.getSession();students = session.selectList("selectByName", name);// 查詢就不需要提交事務了} catch (Exception e) {e.printStackTrace();} finally {if (session != null) {session.close(); // 關閉session}}return students;} }4.修改測試類
public class StudentTest {StudentDao dao;@Beforepublic void before() {dao = new StudentDaoImpl();}@Testpublic void test() {/*** 之前和之后 都是顯示 我們賦予的id值,* 但因為數據庫中 我們設置了 主鍵的自增,所以我們的id相當于沒有從數據庫中查詢到*/Student student = new Student("小黑333", 10);System.out.println("方法之前==" + student);dao.addStudent(student);System.out.println("方法之后==" + student);}@Testpublic void addStudentCacheId() {Student student = new Student("小黑33", 10);// 方法之前因為沒有insert語句 所以也是沒有ID的System.out.println("方法之前==" + student);dao.addStudentCacheId(student);// 產生了 數據庫中的idSystem.out.println("方法之后==" + student);}// 刪除@Testpublic void delete() {dao.deleteStudent(17);}// 修改@Testpublic void update() {Student student = new Student(19, "小黑3111", 10);student.setId(17);dao.updateStudent(student);}// 返回list@Testpublic void selectList() {List<Student> allStudents = dao.selectAllStudents();for (Student student : allStudents) {System.out.println(student);}}// 返回map@Testpublic void selectMap() {Map<String, Object> students = dao.selectAllStudentsMap();/*** 因為以name屬性作為 了key * map集合key不允許出現重復的數據 * 所以后一個會覆蓋前一個*/System.out.println(students.get("小黑122"));}// 返回指定的一個學生信息@Testpublic void selectOne() {Student students = dao.selectById(1);System.out.println(students);}// 模糊查詢學生信息@Testpublic void selectByName() {List<Student> students = dao.selectByName("1");for (Student student : students) {System.out.println(student);}} }轉載于:https://www.cnblogs.com/HHR-SUN/p/7201273.html
總結
以上是生活随笔為你收集整理的mybatis02--增删改查的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL Group Replicat
- 下一篇: python自动华 (七)