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(); } }