Mybatis初学经验----------------(2)
至于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)的更多相关文章
- myBatis初学经验----(1)
Java常用的三种编写模式 Spring,SpringMVC,myBatis. myBatis(原名:iBatis): 开源的ORM(持久层)框架,之前为apahce旗下顶级开源项目,后转到googl ...
- Mybatis初学笔记
MyBatis环境搭建:1.需要mybatis-3.3.0.jar,将该jar包导入web工程的libs文件夹中:2.在src下新建一个mybatis-config.xml文件,mybatis的基本配 ...
- Java Persistence with MyBatis 3(中文版) 前言
对很多软件系统而言,保存数据到数据库和从数据库中检索数据是其工作流程中至关重要的一部分.在 Java 领域,有很多的实现了数据持久化层的工具和框架,它们每一个都有自己不同的实现方法.而 MyBatis ...
- 搭建ssm框架经验
要想搭建好ssm框架的开发环境.首先我们需要知道ssm是什么?ssm就是spring,springmvc,mybatis. 然后我们要知道,他们分别都是怎样实现的和做什么用的,充当什么角色?这样我们就 ...
- [推荐]MyBatis 核心技术与面试 34 讲
MyBatis 核心技术与面试 34 讲 职业生涯中常被问到: 如何成为某方面的高手? 如何快速搞定某项技术? 我现在的水平处于什么阶段? -- 我暗暗想,我们从小学到中学到大学,经历了大考三六九.小 ...
- WPF项目学习.一
WPF项目搭建 版权声明:本文为博主初学经验,未经博主允许不得转载. 一.前言 记录在学习与制作WPF过程中遇到的解决方案. 使用MVVM的优点是 数据和视图分离,双向绑定,低耦合,可重用行,相对独立 ...
- WPF项目学习.二
WPF用MVVM的解决记录 版权声明:本文为博主初学经验,未经博主允许不得转载. 一.前言 记录在学习与制作WPF过程中遇到的解决方案. 焦点的控制,键盘事件触发,输入框的数字限制,异步处理,隐藏状 ...
- WPF项目学习.三
工具代码记录 版权声明:本文为博主初学经验,未经博主允许不得转载. 一.前言 记录在学习与制作WPF过程中遇到的解决方案. 分页控件的制作,邮件发送,日志代码,excel导入导出等代码的实现过程: 二 ...
- WPF项目学习.四
信息收录项目 版权声明:本文为博主初学经验,未经博主允许不得转载. 一.前言 记录在学习与制作WPF过程中遇到的解决方案. 需求文案.设计思路.简要数据库结构.简要流程图和明细代码,动图细化每步操作 ...
随机推荐
- 《Netty权威指南》笔记
第1章 Java的I/O演进之路 1.1 Linux网络I/O模型 fd:file descriptor,文件描述符.linux内核将所有外部设备都看作一个文件来操作,对文件的读写会调用内核提供的命令 ...
- 2019.7.12 sdfzoier做题统计
lixf_lixf :9 P1981 表达式求值 P1076 寻宝 P1199 三国游戏 P1308 统计单词数 P1190 接水问题 P1158 导弹拦截 P1070 道路游戏 P1069 细胞分裂 ...
- 剑指offer-二叉树
1. 平衡二叉树 输入一棵二叉树,判断该二叉树是否是平衡二叉树. 解: 要么是一颗空树,要么左右子树都是平衡二叉树且左右子树深度之差不超过1 1 # class TreeNode: 2 # def _ ...
- Combine 框架,从0到1 —— 5.Combine 常用操作符
本文首发于 Ficow Shen's Blog,原文地址: Combine 框架,从0到1 -- 5.Combine 常用操作符. 内容概览 前言 print breakpoint handleEve ...
- PicGo图床与Typora(PicGo+Typora+GitHub的完整设置)
PicGo图床与Typora(PicGo+Typora+GitHub的完整设置) 如何更方便的用markdown写文章,接下来按照我的步骤来,你一定可以的,这个文章包含了GitHub图床配置.PicG ...
- randomatic
下载 randomaticrandomatic 使用简单的字符序列生成指定长度的随机字符串.原generate-password. 请考虑下面这个项目的作者,Jon Schlinkert主演的,考虑项 ...
- Hello World背后的事情
Hello World是不少人学习C++的第一项内容,代码看似简单,很多东西却涉及根本 #include <iostream> using namespace std; int main( ...
- 最新最最最简单的Snagit傻瓜式破解教程(带下载地址)
最新最最最简单的Snagit傻瓜式破解教程(带下载地址) 下载地址 直接滑至文章底部下载 软件介绍 一个非常著名的优秀屏幕.文本和视频捕获.编辑与转换软件.可以捕获Windows屏幕.DOS屏幕:RM ...
- 一个故事看懂AI神经网络工作原理
我是一个AI神经元 我是一个AI神经元,刚刚来到这个世界上,一切对我来说都特别新奇. 之所以叫这个名字,是因为我的工作有点像人类身体中的神经元. 人体中的神经元可以传递生物信号,给它输入一个信号,它经 ...
- 手撸ORM浅谈ORM框架之基础篇
好奇害死猫 一直觉得ORM框架好用.功能强大集众多优点于一身,当然ORM并非完美无缺,任何事物优缺点并存!我曾一度认为以为使用了ORM框架根本不需要关注Sql语句如何执行的,更不用关心优化的问题!!! ...