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过程中遇到的解决方案. 需求文案.设计思路.简要数据库结构.简要流程图和明细代码,动图细化每步操作 ...
随机推荐
- Xmind 2020 破解教程
前言: 今天用xmind试用版记了会笔记,发现哎哟还真好用,于是乎我脑子一热,点击激活,发现年费好尼玛贵,瞬间我就冷静下来了. 于是乎,脑海里立马浮现出两个字:破解!好了废话不多说,直接上傻瓜教程.( ...
- golang开发:channel使用
channel主要是用于多个goroutine之间通信 channel语法 channel是引用类型,需要实用make来创建channel,如下 make(chan Type, [buffer]) c ...
- C++ 双冒号开头的语法是什么
z转载:https://blog.csdn.net/LHHopencv/article/details/78353380 命名空间限定.std::string 表示std命名空间下的 string类. ...
- Keil ARm新建项目
一.新建一个工程 选好芯片后确认,完成创建 二.新建一个文件 保存为后缀名为*.c的文件 三.把文件添加进项目里面 四.测试 发现有警告 五.给项目添加特定的文件,去除警告或错误 现在保存项目的文件夹 ...
- vue实现语音播报功能
1,创建一个js文件 (voicePrompt.js) function voicePrompt (text){ new Audio('http://tts.baidu.com/text2audio? ...
- Varnish 6.2.2 的介绍与安装
一.简介 Varnish 是一款高性能且开源的反向代理服务器和 HTTP 加速器,其采用全新的软件体系机构,和现在的硬件体系紧密配合,与传统的 Squid 相比,Varnish 具有性能更高.速度更快 ...
- MongoDB单机部署
MongoDB单机部署 一.环境 系统:centos7.6 DB版本:mongodb-linux-x86_64-rhel62-4.2.1.tgz 官网地址:https://www.mongodb.co ...
- Oracle和MySql之间SQL区别(等效转换以及需要注意的问题)
本篇博文是Oracle和MySQL之间的等效SQL转换和不同,目前市面上没有转换两种SQL的工具,小编觉得以后也不一定会有,于是在业余时间整理了一下,如果有什么错误之处请留言告知,小编也是刚入门的小白 ...
- nrf528xx bootloader 模块介绍
1. bootloader 的基本功能: 启动应用 几个应用之间切换 初始化外设 nordic nrf52xxx的bootloader主要功能用来做DFU, 可以通过HCI, UART 或BLE通信的 ...
- Vue 学习 二 路由详解
1 roter-link 和roter-view组件 2路由配置 a.动态路由 b.嵌套路由 c.别名路由 d.命名路由 3 Js操作路由 4 重定向和别名 1为路由默认绑定 2 使用组件 根据 路由 ...