zoukankan      html  css  js  c++  java
  • mybatis 动态代理方式操作数据库(03)

    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();
        }
    }
  • 相关阅读:
    如何使用Log4j
    HDU 1114
    老鼠与毒药问题
    HDU 1065
    HDU 1301(MST)
    HDU 1078
    HDU 2159
    删除字符问题(贪心)
    正整数分解为几个连续自然数之和
    OpenJudge
  • 原文地址:https://www.cnblogs.com/northeastTycoon/p/15416962.html
Copyright © 2011-2022 走看看