mybatis 動態代理方式操作資料庫(03)
阿新 • • 發佈:2021-10-17
mybatis 動態代理方式操作資料庫
注意事項:
/*
* 1、方法名和mapper.xml檔案中標籤的id相同
* 2、該方法的輸入引數和mapper.xml檔案中標籤的parameterType相同
* 3、該方法的返回值和mapper.xml檔案中標籤的resultType相同
* 除了以上約定,要實現介面中方法和mapper.xml 中的SQL標籤一一對應,還需要以下兩點:
* 1、namespace的值,就是介面的全類名(介面 <---> mapper.xml 一一對應)
* 習慣:
* SQL對映檔案(mapper.xml)和介面放在同一個package下
*/
應用例子:
1、實體類
package com.mybatis02.bean; /** * @author :jack.zhao * @date :2021-10-16 22:55 */ public class Person { public Person() { } public Person(int id, String name, int age) { this.id = id; this.name = name; this.age = age; } private int id; private String name;private int age; 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 int getAge() { return age; }public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + '}'; } }
2、操作mybatis介面 mapper型別
package com.mybatis02.mapper; import com.mybatis02.bean.Person; import java.util.List;
/** * @author :jack.zhao * @date :2021-10-16 22:55 */
// 操作mybatis介面 public interface PersonMapper {
// 1、以下方法和mapper.xml 檔案id 一一對應
// 2、方法引數和mapper.xml檔案中標籤的parameterType相同
// 3、方法的返回值和mapper.xml檔案中標籤的resultType相同
Person queryPersonById(int id);
List<Person> queryListPerson();
void addPerson(Person person);
void delStudentById(int id);
void updateStudentById(Person person); }
3、mapper.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"> <mapper namespace="com.mybatis02.mapper.PersonMapper"> <select id="queryPersonById" parameterType="int" resultType="com.mybatis02.bean.Person"> select id,name,age from t_person where id = #{id} </select> <insert id="addPerson" parameterType="com.mybatis02.bean.Person"> INSERT INTO t_person(id,name,age) VALUES (#{id},#{name},#{age}) </insert> <delete id="delStudentById" parameterType="int"> DELETE from t_person where id =#{id} </delete> <update id="updateStudentById" parameterType="com.mybatis02.bean.Person"> UPDATE t_person SET NAME =#{name},age = #{age} where id =#{id} </update> <select id="queryListPerson" resultType="com.mybatis02.bean.Person"> select id,name,age from t_person </select> </mapper>
4、測試類
package com.mybatis02.test; import com.mybatis02.bean.Person; import com.mybatis02.mapper.PersonMapper; 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 org.junit.jupiter.api.Test; import java.io.Reader; import java.util.List; /** * @author :jack.zhao * @date :2021-10-16 22:42 */ public class test { /** * 根據ID查詢人的資訊 */ @Test public void test01() throws Exception{ Reader reader = Resources.getResourceAsReader("mybatis-02.xml"); SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader); SqlSession session = sessionFactory.openSession(); // 動態代理 PersonMapper personMapper = session.getMapper(PersonMapper.class); Person person = personMapper.queryPersonById(1001); System.out.println("根據ID查詢人員資訊為:"+person); session.close(); } // 查詢集合資訊 @Test public void selectList() throws Exception{ Reader reader = Resources.getResourceAsReader("mybatis-02.xml"); SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader); SqlSession session = sessionFactory.openSession(); // 動態代理 PersonMapper personMapper = session.getMapper(PersonMapper.class); List<Person> personList = personMapper.queryListPerson(); System.out.println("查詢所有人員資訊為:"+personList); session.close(); } // 增加人員資訊 @Test public void addPerson() throws Exception{ Reader reader = Resources.getResourceAsReader("mybatis-02.xml"); SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader); SqlSession session = sessionFactory.openSession(); Person persion = new Person(1003,"wangwu",29); // 動態代理 PersonMapper personMapper = session.getMapper(PersonMapper.class); personMapper.addPerson(persion); session.commit(); // 因為配置的是JDBC方式需要手動執行commit操作 System.out.println("新增人員資訊成功!"); session.close(); } // 根據ID刪除指定資訊 @Test public void delPesonByID() throws Exception{ Reader reader = Resources.getResourceAsReader("mybatis-02.xml"); SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader); SqlSession session = sessionFactory.openSession(); // 動態代理 PersonMapper personMapper = session.getMapper(PersonMapper.class); personMapper.delStudentById(1003); session.commit(); // 因為配置的是JDBC方式需要手動執行commit操作 System.out.println("刪除人員資訊成功!"); session.close(); } // 修改人員資訊 @Test public void updateStudentById() throws Exception{ Person person = new Person(1003,"maliu",26); Reader reader = Resources.getResourceAsReader("mybatis-02.xml"); SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader); SqlSession session = sessionFactory.openSession(); // 動態代理 PersonMapper personMapper = session.getMapper(PersonMapper.class); personMapper.updateStudentById(person); session.commit(); // 因為配置的是JDBC方式需要手動執行commit操作 System.out.println("修改人員資訊成功!"); session.close(); } }