• Mybatis初学经验----------------(2)


    至于myBatis的配置上篇文章中有就不说了今天谈谈myBatis编写Dao层时的用法

    传统Dao层代码需求

    1、在Dao层实现类中,存在大量的模板方法,能否提取模板方法,减少我们的工作量。

    2、将statementId硬编码到了Dao层实现类。

    采用mapper代理的方式进行Dao层的开发,需要有几个约定(约定大于配置)

    1XXXMapper.xmlnamespace的值需要与Dao接口中的全类名相同。 (确定哪一个XXXMapper.xml文件)

    2XXXMapper.java 接口中的方法名与XXXMapper.xml中的statementId相同(确定使用哪个sql);

    3XXXMapper.java 接口中的方法输入参数需要与XXXMapper.xmlParameterType定义的类型相同;

    4XXXMapper.java 接口中的方法返回值类型需要与XXXMapper.xmlresultType定义的类型相同;

    具体使用方法如下:

    收下建立如下的三个文件

    userMapper.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.xt.mybatis.hello.Mapper.AnimalMapper">
    
     <!—
    
    XXXMapper.xml中namespace的值需要与Dao接口中的全类名相同。 (确定哪一个XXXMapper.xml文件)
    
     
    
     statementId=namespace+queryAnimalInfoBySid
    
     属性ID:标示映射文件中的sql的唯一性,ID被称为statementId
    
    属性 parameterType: 入参参数类型
    
    属性resultType:输出结果类型,表示单条数据记录映射成的javaBean
    
     
    
    #{value} 表示预处理,代表占位符
    
    ${value} 表示sql字符串的拼接,将结束到的数据不加任何修饰拼装到sql中。
    
     
    
    resultMap: 数据字段名与输出类型属性的一个对应。
    
    type:代表输出的javaBean类
    
      -->
    
      <resultMap type="com.xt.mybatis.hello.Animal.entity.Animal" id="Animal">
    
         <id column="SID" property="sid"/>
    
         <result column="Name" property="name"/>
    
         <result column="Kind" property="kind"/>
    
         <result column="Number" property="number"/>
    
         <result column="Address" property="address"/>
    
      </resultMap>
    
     <select id="queryAnimalInfoBySid" parameterType="int" resultMap="Animal">
    
     select * from animal where SID=#{sid}
    
     </select>
    
     
    
    <insert id="insertAnimal" parameterType="com.xt.mybatis.hello.Animal.entity.Animal">
    
    insert into animal vaules (#{sid},#{name},#{kind},#[number},#{addrss})
    
    </insert>
    
    <delete id="deleteAnimal" parameterType="string">
    
    delete from animal where SID=#{sid}
    
    </delete>
    
    <update id="updateAnimal" >
    
    update animal set Name=#{name},Kind="kind", Number =#{number},Address=#{address} where SID=#{sid}
    
    </update>
    
    </mapper>

    同时你要引入你所建立的这个Mapper

    mybatis-config.xml中加入下面的代码

    <mappers>
    
       <mapper resource="com/xt/mybatis/hello/Mapper/userMapper.xml"/>
    
      </mappers>

    接口内的方法要注意了:

    public interface AnimalMapper {
    
      public List<Animal> queryAnimalInfoBySid(int sid);
    
      /*
    
    XXXMapper.java 接口中的方法名与XXXMapper.xml中的statementId相同(确定使用哪个sql);
    
    XXXMapper.java 接口中的方法输入参数需要与XXXMapper.xml中ParameterType定义的类型相同;
    
    XXXMapper.java 接口中的方法返回值类型需要与XXXMapper.xml中resultType定义的类型相同;
    
     
    
    */
    
      public void insertAnimal(Animal al);
    
      
    
      public void deleteAnimal(String sid);
    
      
    
      public void updateAnimal(Animal al);
    
    }
    
    下面我们就可以进行测试了
    
    public class mapperTest {
    
        SqlSession ss=null;
    
        @Before 
    
        public void Init(){
    
         try {
    
         SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis/mybatis-config.xml"));
    
    ss = ssf.openSession();
    
    } catch (IOException e) {
    
    e.printStackTrace();
    
    }
    
        }
    
        @Test
    
        public void queryAnimalInfoBySid(){
    
         AnimalMapper map = ss.getMapper(AnimalMapper.class);
    
         System.out.println("=========Animal========"+map.queryAnimalInfoBySid(1806));
    
         ss.close();
    
        }
    
    }

    结果如下

     

    你一定会喜欢那个因为喜欢她而发光的自己!
    个人博客:http://www.yanghelong.top
  • 相关阅读:
    小程序---云开发----云函数
    小程序的基本概念-生命周期(组件 wxml)
    小程序的基本概念
    vue登录功能和将商品添加至购物车实现
    vue脚手架创建项目
    node.js评论列表和添加购物车数据库表创建
    学习脚手架--组件之间跳转与参数(组件之间参数)
    node.js 需要注意知识点
    如何查询小程序官方手册
    vue ui九宫格、底部导航、新闻列表、跨域访问
  • 原文地址:https://www.cnblogs.com/zzu-general/p/7822424.html
Copyright © 2020-2023  润新知