mybatis02--增删改查
生活随笔
收集整理的這篇文章主要介紹了
mybatis02--增删改查
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.修改StudentDao
public interface StudentDao {/*** 新增學(xué)生信息*/void addStudent(Student student);// 新增完畢之后有IDvoid addStudentCacheId(Student student);// 刪除學(xué)生信息void deleteStudent(Integer id);// 修改void updateStudent(Student student);// 查詢所有List<Student> selectAllStudents();// 查詢出來的是一個map集合Map<String, Object> selectAllStudentsMap();// 查詢指定的Student selectById(Integer id);// 根據(jù)姓名模糊查詢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"><!--新增學(xué)生 --><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"><!-- 這里面的{}必須是和實(shí)體類中的屬性名一致 -->update student set name=#{name},age=#{age},id=#{id}where id=#{id}</update><!-- 查詢所有 list 必須指定返回值的類型resultType是一個學(xué)生對象 不然底層沒法封裝 --><select id="selectAllStudents" resultType="Student">select id,name,agefrom student</select><!-- 查詢指定id學(xué)生信息 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. 使用的是動態(tài)參數(shù)綁定 底層走的是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;/*** 新增學(xué)生信息*/public void addStudent(Student student) {try {// 通過工具類獲取sessionsession = SessionUtil.getSession();/*** "addStudent" 要和mapper.xml文件中的id一致* 增刪改 操作 底層 執(zhí)行的都是update方法 */session.insert("addStudent", student);// 必須手動讓session提交 底層默認(rèn)就提交了事務(wù)session.commit();} catch (Exception e) {e.printStackTrace();} finally {if (session != null) {session.close(); // 關(guān)閉session}}}public void addStudentCacheId(Student student) {try {// 通過工具類獲取sessionsession = SessionUtil.getSession();session.insert("addStudentCacheId", student);// 必須手動讓session提交 底層默認(rèn)就提交了事務(wù)session.commit();} catch (Exception e) {e.printStackTrace();} finally {if (session != null) {session.close(); // 關(guān)閉session}}}// 刪除public void deleteStudent(Integer id) {try {// 通過工具類獲取sessionsession = SessionUtil.getSession();session.delete("deleteStudent", id);// 必須手動讓session提交 底層默認(rèn)就提交了事務(wù)session.commit();} catch (Exception e) {e.printStackTrace();} finally {if (session != null) {session.close(); // 關(guān)閉session}}}// 修改學(xué)生信息public void updateStudent(Student student) {try {// 通過工具類獲取sessionsession = SessionUtil.getSession();session.update("updateStudent", student);// 必須手動讓session提交 底層默認(rèn)就提交了事務(wù)session.commit();} catch (Exception e) {e.printStackTrace();} finally {if (session != null) {session.close(); // 關(guān)閉session}}}// 查詢返回list集合public List<Student> selectAllStudents() {List<Student> students = new ArrayList<Student>();try {// 通過工具類獲取sessionsession = SessionUtil.getSession();students = session.selectList("selectAllStudents");// 查詢就不需要提交事務(wù)了} catch (Exception e) {e.printStackTrace();} finally {if (session != null) {session.close(); // 關(guān)閉session}}return students;}// 返回map集合public Map<String, Object> selectAllStudentsMap() {Map<String, Object> students = new HashMap<String, Object>();try {// 通過工具類獲取sessionsession = SessionUtil.getSession();// 還是之前l(fā)ist的方法 但是 key放什么? key必須是查詢出來實(shí)體類的屬性值students = session.selectMap("selectAllStudents", "name");// 查詢就不需要提交事務(wù)了} catch (Exception e) {e.printStackTrace();} finally {if (session != null) {session.close(); // 關(guān)閉session}}return students;}// 根據(jù)id查詢指定的學(xué)生信息public Student selectById(Integer id) {Student students = null;try {// 通過工具類獲取sessionsession = SessionUtil.getSession();// 還是之前l(fā)ist的方法 但是 key放什么? key必須是查詢出來實(shí)體類的屬性值students = session.selectOne("selectById", id);// 查詢就不需要提交事務(wù)了} catch (Exception e) {e.printStackTrace();} finally {if (session != null) {session.close(); // 關(guān)閉session}}return students;}// 根據(jù)name模糊查詢 返回list集合public List<Student> selectByName(String name) {List<Student> students = new ArrayList<Student>();try {// 通過工具類獲取sessionsession = SessionUtil.getSession();students = session.selectList("selectByName", name);// 查詢就不需要提交事務(wù)了} catch (Exception e) {e.printStackTrace();} finally {if (session != null) {session.close(); // 關(guān)閉session}}return students;} }4.修改測試類
public class StudentTest {StudentDao dao;@Beforepublic void before() {dao = new StudentDaoImpl();}@Testpublic void test() {/*** 之前和之后 都是顯示 我們賦予的id值,* 但因?yàn)閿?shù)據(jù)庫中 我們設(shè)置了 主鍵的自增,所以我們的id相當(dāng)于沒有從數(shù)據(jù)庫中查詢到*/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);// 方法之前因?yàn)闆]有insert語句 所以也是沒有ID的System.out.println("方法之前==" + student);dao.addStudentCacheId(student);// 產(chǎn)生了 數(shù)據(jù)庫中的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();/*** 因?yàn)橐詎ame屬性作為 了key * map集合key不允許出現(xiàn)重復(fù)的數(shù)據(jù) * 所以后一個會覆蓋前一個*/System.out.println(students.get("小黑122"));}// 返回指定的一個學(xué)生信息@Testpublic void selectOne() {Student students = dao.selectById(1);System.out.println(students);}// 模糊查詢學(xué)生信息@Testpublic void selectByName() {List<Student> students = dao.selectByName("1");for (Student student : students) {System.out.println(student);}} }轉(zhuǎn)載于:https://www.cnblogs.com/HHR-SUN/p/7201273.html
總結(jié)
以上是生活随笔為你收集整理的mybatis02--增删改查的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL Group Replicat
- 下一篇: 转:高效代码审查的八条准则和十个经验