• Mapper动态代理开发


    1. 在开发的过程中只需要写Dao层的借口,无需写其实现类,实现类有框架自己补充。
    2. 框架是根据mapper文件自动补充的,因此需要满足下面四个条件
    3. Mapper接口开发需要遵循以下规范:
      • Mapper.xml文件中的namespace与mapper接口的类路径相同。
      • Mapper接口方法名和Mapper.xml中定义的每个statement的id相同
      • Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同
      • Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同

    1,数据库

    create table STUDENT
    (
      STU_ID        VARCHAR2(11) not null,
      STU_NAME      VARCHAR2(50),
      STU_BIRTHDATE DATE,
      STU_PHONE     VARCHAR2(50)
    )

    2,pojo

    package com.songyan.pojo;
    
    import java.util.Date;
    import java.lang.String;
    public class Student {
        private String stuId;
        private String stuName;
        private Date stuBirthdate;
        private String stuPhone;
    
        public String getStuId() {
            return stuId;
        }
    
        public void setStuId(String stuId) {
            this.stuId = stuId;
        }
    
        public String getStuName() {
            return stuName;
        }
    
        public void setStuName(String stuName) {
            this.stuName = stuName;
        }
    
        public Date getStuBirthdate() {
            return stuBirthdate;
        }
    
        public void setStuBirthdate(Date stuBirthdate) {
            this.stuBirthdate = stuBirthdate;
        }
    
        public String getStuPhone() {
            return stuPhone;
        }
    
        public void setStuPhone(String stuPhone) {
            this.stuPhone = stuPhone;
        }
        @Override
        public String toString() {
            
            return "student:"+this.stuId+"  "+this.stuName;
        }
    
    }

    3,dao

    package com.songyan.dao;
    
    import java.util.List;
    
    import com.songyan.pojo.Student;
    
    public interface StudentMapper {
        public void insertStudent(Student student);
        public void deteteStudent(String id);
        public void updateStudent(Student student);
        public List<Student> selectStudent(String id);
    }

    4,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.songyan.dao.StudentMapper">
        <resultMap type="student" id="BaseResultMap">
            <id column="STU_ID" property="stuId" javaType="java.lang.String"
                jdbcType="VARCHAR" />
            <result column="STU_NAME" property="stuName" javaType="java.lang.String"
                jdbcType="VARCHAR" />
            <result column="STU_BIRTHDATE" property="stuBirthdate"
                javaType="java.util.Date" jdbcType="DATE" />
            <result column="STU_PHONE" property="stuPhone" javaType="java.lang.String"
                jdbcType="VARCHAR" />
        </resultMap>
        <select id="selectStudent" parameterType="String"
        resultType="com.songyan.pojo.Student">
            select * from student where STU_ID= #{stuId}
        </select>
        <insert id="insertStudent" parameterType="student" >
            insert into student(STU_ID,STU_NAME,STU_PHONE)
            values(#{stuId},#{stuName},#{stuPhone})
        </insert>
        
        <delete id="deteteStudent" parameterType="String">
            delete from student where STU_ID= #{stuId}
        </delete>
        
        <update id="updateStudent" parameterType="String">
            update student set STU_NAME=#{stuName} where  STU_ID =  #{stuId}
        </update>
    </mapper>

    5,核心配置文件

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
        <settings>
            <setting name="logImpl" value="LOG4J"/>
        </settings>
        <typeAliases>
            <typeAlias type="com.songyan.pojo.Student" alias="student" />
        </typeAliases>
        <!--配置环境,默认的环境id为oracle -->
        <environments default="oracle">
            <!-- 配置环境为oracle的环境 -->
            <environment id="oracle">
                <!--使用JDBC的事务处理 -->
                <transactionManager type="JDBC" />
                <!--数据库连接池 -->
                <dataSource type="POOLED">
                    <property name="driver" value="oracle.jdbc.driver.OracleDriver"></property>
                    <property name="url" value="jdbc:oracle:thin:@localhost:1521:inspur"></property>
                    <property name="username" value="scott"></property>
                    <property name="password" value="tiger"></property>
                </dataSource>
            </environment>
        </environments>
        <!--配置mapper的位置 -->
        <mappers>
            <mapper resource="com/songyan/dao/studentMapper.xml" />
        </mappers>
    </configuration>
    

    6,log4j

    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.Target=System.out
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p [%t] %c{1}:%L - %m%n
    #u5728u5F00u53D1u73AFu5883u4E0Bu65E5u5FD7u7EA7u522Bu8981u8BBEu7F6Eu6210DEBUGuFF0Cu751Fu4EA7u73AFu5883u8BBEu7F6Eu6210infou6216error
    log4j.rootLogger=DEBUG, stdout
    #log4j.rootLogger=stdout

    7,测试类

    package com.songyan.client;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.List;
    
    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.Test;
    
    import com.songyan.dao.StudentMapper;
    import com.songyan.pojo.Student;
    
    
    
    public class Client {
    @Test 
    public void testInsert() throws IOException
    {
        //读取配置信息
        String resource="applicationContext.xml";
        //根据配置文件构建sqlsessionFactory
        InputStream in=Resources.getResourceAsStream(resource);
        //通过sqlsessionFactory创建sqlsession
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);
        SqlSession sqlSession =sqlSessionFactory.openSession(); 
        //创建一个学生对象
        Student student =new Student();
        student.setStuId("1");
        student.setStuName("tom");
        student.setStuPhone("111");
        //获取接口类
        StudentMapper studentMapper=sqlSession.getMapper(StudentMapper.class);
        studentMapper.insertStudent(student);
        //输出结果
        sqlSession.commit();
        sqlSession.close();
    }
    
    @Test 
    public void testDelete() throws IOException
    {
        //读取配置信息
        String resource="applicationContext.xml";
        //根据配置文件构建sqlsessionFactory
        InputStream in=Resources.getResourceAsStream(resource);
        //通过sqlsessionFactory创建sqlsession
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);
        SqlSession sqlSession =sqlSessionFactory.openSession(); 
        //获取接口类
        StudentMapper studentMapper=sqlSession.getMapper(StudentMapper.class);
        studentMapper.deteteStudent("1");
        sqlSession.commit();
        sqlSession.close();
    }
    
    
    @Test 
    public void testUpdate() throws IOException
    {
        //读取配置信息
        String resource="applicationContext.xml";
        //根据配置文件构建sqlsessionFactory
        InputStream in=Resources.getResourceAsStream(resource);
        //通过sqlsessionFactory创建sqlsession
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);
        SqlSession sqlSession =sqlSessionFactory.openSession(); 
        //创建一个学生对象
        Student student =new Student();
        student.setStuId("2");
        student.setStuName("tofm");
        student.setStuPhone("111");
        //获取接口类
        StudentMapper studentMapper=sqlSession.getMapper(StudentMapper.class);
        studentMapper.updateStudent(student);
        
        sqlSession.commit();
        sqlSession.close();
    }
    
    
    @Test 
    public void testSelect() throws IOException
    {
        //读取配置信息
        String resource="applicationContext.xml";
        //根据配置文件构建sqlsessionFactory
        InputStream in=Resources.getResourceAsStream(resource);
        //通过sqlsessionFactory创建sqlsession
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(in);
        SqlSession sqlSession =sqlSessionFactory.openSession(); 
        //获取接口类
        StudentMapper studentMapper=sqlSession.getMapper(StudentMapper.class);
    
        List<Student> relstu=studentMapper.selectStudent("2");
        System.out.println(relstu.toString());
        //输出结果
        for(Student stu : relstu)
        {
            System.out.println(stu);
        }
        sqlSession.close();
    }
    }

    目录

     

  • 相关阅读:
    利用connect建立前端开发服务器
    Bootstrap Popover 隐藏的Javasript方法
    Kafka 2.1.0压缩算法性能测试
    关于Kafka java consumer管理TCP连接的讨论
    Java API获取consumer group最新提交位移的时间
    关于Kafka producer管理TCP连接的讨论
    【译】Apache Kafka支持单集群20万分区
    关于Kafka broker IO的讨论
    Kafka 2.0 ConsumerGroupCommand新功能
    关于Kafka high watermark的讨论2
  • 原文地址:https://www.cnblogs.com/excellencesy/p/9167401.html
Copyright © 2020-2023  润新知