zoukankan      html  css  js  c++  java
  • MyBatis的Mapper代理模式开发

      使用这种模式程序员需要编写mapper.xml文件,程序员编写mapper接口要遵循规范,mybatis可以自动生成mapper接口实现类代理对象。

    开发规范:
    1.在mapper.xml中namespace等于mapper接口地址。
    <mapper namespace="com.test.dao.UserMapper">
    2.mapper.java接口中的方法名和mapper.xml中statement的id的名字一致。
    <select id="findUserById"
    3.mapper.java接口中方法输入参数类型和mapper.xml中statement的parameterType指定的类型保持一致。
    4.mapper.java接口中的方法返回值类型和mapper.xml中statement的resultType指定的类型保持一致。

    案例如下:

    1.User.java 文件参考MyBatis实现增删改查

    2.SqlMapConfig.xml

     1 <!DOCTYPE configuration
     2 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
     3 "http://mybatis.org/dtd/mybatis-3-config.dtd">
     4 <configuration>
     5     <!-- 和spring整合后 environments配置将废除  mybatis-config.xml-->
     6     <environments default="development">
     7         <environment id="development">
     8         <!-- 使用jdbc事务管理-->
     9             <transactionManager type="JDBC" />
    10         <!-- 数据库连接池-->
    11             <dataSource type="POOLED">
    12                 <property name="driver" value="oracle.jdbc.driver.OracleDriver" />
    13                 <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" />
    14                 <property name="username" value="dsx" />
    15                 <property name="password" value="admin" />
    16             </dataSource>
    17         </environment>
    18     </environments>
    19     
    20     <!-- 加载mapper.xml -->
    21     <mappers>
    22         <mapper resource="com/test/dao/UserMapper.xml" />
    23     </mappers>
    24     
    25 </configuration>

    3.UserMapper.java接口

    package com.test.dao;
    
    import com.test.entity.User;
    /**
     * 
     * @author Mr
     * Mapper接口代理模式开发命名一定是:实体类名+Mapper
     * 
     * 使用mapper开发步骤:
     *     1.编写接口和mapper.xml要遵循4个指标
     *     2.SqlMapConfig.xml中加载UserMapper.xml
     */
    public interface UserMapper {
        //根据用户id查询用户
        public User findUserById(int id);
        //添加用户
        public void addUser(User user);
        //删除用户条目
        public void delUserById(int id);
        //根据id更新用户信息
        public void upUserById(int id);
    }

    4.UserMapper.xml配置文件 和第3步在同一包下

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE mapper
     3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
     5 <!-- namespace命名空间是UserMapper接口的全类名-->
     6 <mapper namespace="com.test.dao.UserMapper">
     7 <!-- 这里可以配置多个sql
     8     根据用户的id查询
     9  -->
    10  <select id="findUserById" parameterType="int" resultType="com.test.entity.User">
    11      select * from userss WHERE ID=#{id}
    12  </select>
    13  <!-- 添加用户 -->
    14  <insert id="addUser" parameterType="com.test.entity.User">
    15      insert into userss values(seq_users_id.nextval,#{username},#{birthday},#{sex},#{address})
    16  </insert>
    17  
    18  </mapper>

    5.测试类

     1 package com.test.demo;
     2 
     3 import java.io.IOException;
     4 import java.io.InputStream;
     5 import java.util.Date;
     6 
     7 import org.apache.ibatis.io.Resources;
     8 import org.apache.ibatis.session.SqlSession;
     9 import org.apache.ibatis.session.SqlSessionFactory;
    10 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    11 
    12 import com.test.dao.UserMapper;
    13 import com.test.entity.User;
    14 
    15 /**
    16  * 
    17  * @author Mr
    18  * 只写了接口,没有写接口的实现类
    19  */
    20 public class Test3 {
    21 
    22     public static void main(String[] args) {
    23         // TODO Auto-generated method stub
    24         try {
    25             //mybatis核心配置文件
    26             String resource = "SqlMapConfig.xml";
    27             //读取配置文件
    28             InputStream inputStream = Resources.getResourceAsStream(resource);
    29             //获取工厂
    30             SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(inputStream);
    31             //获取数据库操作对象
    32             SqlSession sqlSession = sf.openSession();
    33             //通过反射机制自动生成接口实现类
    34             UserMapper um = sqlSession.getMapper(UserMapper.class);
    35 /*            //调用方法获取对象
    36             User user = um.findUserById(31);
    37             System.out.println(user);*/
    38             
    39             //添加用户
    40             User user = new User("老赵", new Date(), "1", "宁夏回族自治区");
    41             um.addUser(user);
    42             sqlSession.commit();
    43             System.out.println(user);
    44             
    45         } catch (IOException e) {
    46             // TODO Auto-generated catch block
    47             e.printStackTrace();
    48         }
    49         
    50 
    51     }
    52 
    53 }
  • 相关阅读:
    C阶段【01】
    Xcode常用快捷键的使用
    eclipse中添加web app libraries
    hibernate 连接SQL SERVER2008
    hibernate配置入门(个人总结)
    项目编译PNG报错
    项目archive打包编译报错
    项目上传
    Git本地项目上传,版本管理工具与GitHub的简单结合使用
    将制定目录下的内容复制到另一个路径下
  • 原文地址:https://www.cnblogs.com/myhzb/p/7646090.html
Copyright © 2011-2022 走看看