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

传统Dao层代码需求

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

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

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

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

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

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

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

具体使用方法如下:

收下建立如下的三个文件

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

    }

}

结果如下

Mybatis初学经验----------------(2)的更多相关文章

  1. myBatis初学经验----(1)

    Java常用的三种编写模式 Spring,SpringMVC,myBatis. myBatis(原名:iBatis): 开源的ORM(持久层)框架,之前为apahce旗下顶级开源项目,后转到googl ...

  2. Mybatis初学笔记

    MyBatis环境搭建:1.需要mybatis-3.3.0.jar,将该jar包导入web工程的libs文件夹中:2.在src下新建一个mybatis-config.xml文件,mybatis的基本配 ...

  3. Java Persistence with MyBatis 3(中文版) 前言

    对很多软件系统而言,保存数据到数据库和从数据库中检索数据是其工作流程中至关重要的一部分.在 Java 领域,有很多的实现了数据持久化层的工具和框架,它们每一个都有自己不同的实现方法.而 MyBatis ...

  4. 搭建ssm框架经验

    要想搭建好ssm框架的开发环境.首先我们需要知道ssm是什么?ssm就是spring,springmvc,mybatis. 然后我们要知道,他们分别都是怎样实现的和做什么用的,充当什么角色?这样我们就 ...

  5. [推荐]MyBatis 核心技术与面试 34 讲

    MyBatis 核心技术与面试 34 讲 职业生涯中常被问到: 如何成为某方面的高手? 如何快速搞定某项技术? 我现在的水平处于什么阶段? -- 我暗暗想,我们从小学到中学到大学,经历了大考三六九.小 ...

  6. WPF项目学习.一

    WPF项目搭建 版权声明:本文为博主初学经验,未经博主允许不得转载. 一.前言 记录在学习与制作WPF过程中遇到的解决方案. 使用MVVM的优点是 数据和视图分离,双向绑定,低耦合,可重用行,相对独立 ...

  7. WPF项目学习.二

    WPF用MVVM的解决记录 版权声明:本文为博主初学经验,未经博主允许不得转载. 一.前言 记录在学习与制作WPF过程中遇到的解决方案.  焦点的控制,键盘事件触发,输入框的数字限制,异步处理,隐藏状 ...

  8. WPF项目学习.三

    工具代码记录 版权声明:本文为博主初学经验,未经博主允许不得转载. 一.前言 记录在学习与制作WPF过程中遇到的解决方案. 分页控件的制作,邮件发送,日志代码,excel导入导出等代码的实现过程: 二 ...

  9. WPF项目学习.四

    信息收录项目 版权声明:本文为博主初学经验,未经博主允许不得转载. 一.前言 记录在学习与制作WPF过程中遇到的解决方案.  需求文案.设计思路.简要数据库结构.简要流程图和明细代码,动图细化每步操作 ...

随机推荐

  1. xss的编码原理

    把以前的笔记翻出来整理一下 最前方 xss如何选用编码原理,为什么 找到的挺清楚的文章了:https://www.cnblogs.com/p0laris/p/11898322.html浏览器解析有两种 ...

  2. 如何使用 Python 進行字串格式化

    前言: Python有几种方法可以显示程序的输出:数据可以以人类可读的形式打印出来,或者写入文件以供将来使用. 在开发应用程式时我们往往会需要把变数进行字串格式化,也就是说把字串中的变数替换成变量值. ...

  3. Ribbon自定义负载均衡策略,在网关实现类似Ip_hash的负载均衡,ribbon给单个服务配置属性

    背景: 我需要在网关实现一种功能,某个用户的请求永远打在后台指定的服务,也就是根据ip地址进行负载均衡 原理: 在ribbon的配置类下: 那我们自己创建一个IRule的实现类,模仿ZoneAvoid ...

  4. modelviewset views

    Python 1.4创建user/serializers.py写序列化器 from rest_ framework import serializers from user .models impor ...

  5. (转载)什么是B树?

    本文转载自网络. 如有侵权,请联系处理!  

  6. 迪杰斯特拉和spfa

    迪杰斯特拉 Dijkstra算法是典型的算法.Dijkstra算法是很有代表性的算法.Dijkstra一般的表述通常有两种方式,一种用永久和临时标号方式,一种是用OPEN, CLOSE表的方式,这里均 ...

  7. Layman CSS3+H5实现上下垂直居中的几种主要方法

    方法1:通过 translate 移位来实现 H5+CSS3: <div style="width: 100%; height: 100%; margin:0; padding: 0; ...

  8. 利用HDFS实现ElasticSearch7.2容灾方案

    利用HDFS实现ElasticSearch7.2容灾方案 目录 利用HDFS实现ElasticSearch7.2容灾方案 前言 快照版本兼容 备份集群 HDFS文件系统 软件下载 JDK环境 配置系统 ...

  9. turtle库元素语法分析

    一.turtle原理理解: turtle库是Python中一个有趣的图形绘制函数库.原名(海龟),我们想象一只海龟,位于显示器上窗体的正中心,在画布上游走,它游走的轨迹就形成了绘制的图形. 对于小海龟 ...

  10. Android开发还不会这些?如何面试拿高薪!

    我所接触的Android开发者,百分之九十五以上 都遇到了以下几点致命弱点! 如果这些问题也是阻止你升职加薪,跳槽大厂的阻碍. 那么我确信可以帮你突破瓶颈! 群内有许多来自一线的技术大牛,也有在小厂或 ...