mybatis学习(三)——接口式编程
对于上一节中的查询我们还可以通过接口的方式进行编程,开发环境和上一节一样
1、全局配置文件mybatis_config.xml(和上一节一样)
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
- <configuration>
- <environments default="development">
- <environment id="development">
- <transactionManager type="JDBC" />
- <!-- 配置数据库源信息 -->
- <dataSource type="POOLED">
- <property name="driver" value="com.mysql.jdbc.Driver" />
- <property name="url" value="jdbc:mysql://localhost:3306/spring_mybatis" />
- <property name="username" value="root" />
- <property name="password" value="pjf520" />
- </dataSource>
- </environment>
- </environments>
- </configuration>
2、JAVA代码实体类(和上一节一样)
- package com.pjf.mybatis.po;
- public class Hotel {
- private int hotelId;
- private String hotelName;
- private String hotelAddress;
- private int price;
- public int getHotelId() {
- return hotelId;
- }
- public void setHotelId(int hotelId) {
- this.hotelId = hotelId;
- }
- public String getHotelName() {
- return hotelName;
- }
- public void setHotelName(String hotelName) {
- this.hotelName = hotelName;
- }
- public String getHotelAddress() {
- return hotelAddress;
- }
- public void setHotelAddress(String hotelAddress) {
- this.hotelAddress = hotelAddress;
- }
- public int getPrice() {
- return price;
- }
- public void setPrice(int price) {
- this.price = price;
- }
- @Override
- public String toString() {
- return "Hotel [hotelId=" + hotelId + ", hotelName=" + hotelName + ", hotelAddress=" + hotelAddress + ", price="
- + price + "]";
- }
- }
3、(新增)编写hotelMapper接口
- package com.pjf.mybatis.dao;
- import com.pjf.mybatis.po.Hotel;
- public interface HotelMapper {
- public Hotel getHotel(Integer i);
- }
4、(修改)编写sql映射文件hotelMapper.xml
这里修改了namespace,定义为接口的类全名,上一节这里可以随便写。
然后修改了sql的id,对应到接口中的方法,这样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" >
- <!-- 这里的namespace写hotelMapper接口的类全名,和接口一一对应 -->
- <mapper namespace="com.pjf.mybatis.dao.HotelMapper">
- <!-- 这里的id写hotelMapper接口对应的方法名 -->
- <select id="getHotel" resultType="com.pjf.mybatis.po.Hotel">
- select id,hotel_name as
- hotelName, hotel_address as hotelAddress, price from hotel
- where
- id=#{id}
- </select>
- </mapper>
5、(修改)编写测试类
- package com.pjf.mybatis;
- import java.io.IOException;
- import java.io.InputStream;
- import org.apache.ibatis.io.Resources;
- import org.apache.ibatis.session.SqlSession;
- import org.apache.ibatis.session.SqlSessionFactory;
- import org.apache.ibatis.session.SqlSessionFactoryBuilder;
- import org.junit.Test;
- import com.pjf.mybatis.dao.HotelMapper;
- import com.pjf.mybatis.po.Hotel;
- public class TestHotel {
- public SqlSessionFactory sqlSessionFactory() throws IOException {
- // mybatis的配置文件
- String resource = "mybatis_config.xml";
- // 使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)TestHotel.class.getClassLoader()
- InputStream is = Resources.getResourceAsStream(resource);
- // 构建sqlSession的工厂
- SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
- return sessionFactory;
- }
- @Test
- public void getHotel() throws IOException {
- //如果有多个会话,会新建多个SqlSessionFactory,将重复的内容通过函数提取出来了
- SqlSessionFactory sessionFactory = sqlSessionFactory();
- // 打开jdbc会话
- SqlSession session = sessionFactory.openSession();
- // 创建hotelMapper类的实例
- // 虽然这是个接口,但是mybatis会通过动态代理新建一个实体类
- // 可以通过System.out.println(hotelMapper.getClass())查看该类的类型
- // 输出class com.sun.proxy.$Proxy5,可以看到是一个代理类
- HotelMapper hotelMapper = session.getMapper(HotelMapper.class);
- System.out.println(hotelMapper.getClass());
- Hotel hotel = hotelMapper.getHotel(1001);
- System.out.println(hotel);
- session.close();
- }
- }
可以看到结果和之前一致。
mybatis学习(三)——接口式编程的更多相关文章
- 通过自动回复机器人学Mybatis 笔记:接口式编程
[接口式编程]尚未遇见Spring --> 代码量反而增加 1.增加约定,减少犯错的可能(不用直接去写字符串 修改点1:命名空间 修改点2:增加接口,方法名与配置文件中的id对应 package ...
- 通过自动回复机器人学Mybatis笔记:接口式编程
[接口式编程]尚未遇见Spring --> 代码量反而增加 1.增加约定,减少犯错的可能(不用直接去写字符串 修改点1:命名空间 修改点2:增加接口,方法名与配置文件中的id对应 package ...
- MyBatis的接口式编程Demo
很久没细看过MyBatis了,时间一长就容易忘记. 下面是一个接口式编程的例子. 这里的例子一共分为4步: 1 首先要有一个namespace为接口的全类名的映射文件,该例中是 IMyUser.xml ...
- MyBatis源码解析【7】接口式编程
前言 这个分类比较连续,如果这里看不懂,或者第一次看,请回顾之前的博客 http://www.cnblogs.com/linkstar/category/1027239.html 修改例子 在我们实际 ...
- Mybatis笔记二:接口式编程
目录 旧方法的弊端 接口式编程 接口式编程的好处 接口式编程的增删改查 旧方法的弊端 在Mybatis笔记一中,我们使用命名空间+id的方式实现了Mybatis的执行,不过这里的命名空间是我们随便写的 ...
- mybaits接口式编程
Mybatis是接口式编程实现对.xml中sql语句的执行,其过程如下(取自慕课网视频<通过自动回复机器人学Mybatis---加强版>): 1.加载配置信息2.通过加载配置信息加载一个代 ...
- MyBatis3-topic04,05 -接口式编程
笔记要点 /**接口式编程: * 1. 原生: Dao 接口-->Dao接口的实现类 * mybatis: Mapper --> 有一个与之对应的 XXMapper.xml * 2. Sq ...
- 早期MyBatis开发与接口式Mybatis开发的简介
早期MyBatis开发与接口式Mybatis开发的简介 一.早期版本的myBatis使用 导jar包 1.配置mybatis.xml的配置文件 1) ...
- 深度学习初探——符号式编程、框架、TensorFlow
一.命令式编程(imperative)和符号式编程(symblic) 命令式: import numpy as np a = np.ones(10) b = np.ones(10) * 2 c = b ...
- MyBatis学习(三)---MyBatis和Spring整合
想要了解MyBatis基础的朋友可以通过传送门: MyBatis学习(一)---配置文件,Mapper接口和动态SQL http://www.cnblogs.com/ghq120/p/8322302. ...
随机推荐
- Java MVC 分页实例
共4个文件 requestLogList.jsp RequestInfoController.java RequestInfoBean.java RequestInfoService.java 1.r ...
- 关于svn提交的时候强制写注释
本文固定链接: http://www.linuxyan.com/linux-service/229.html 转载请注明: admin 2012年09月29日 于 ㄨ销声匿迹.Linux 发表 在sv ...
- WPF中播放视频音频
首先要在WPF中播放视频和音频,我们就需要用到MediaElement控件,下面我们示例播放音频和视频. 用MediaElement播放音频: 第一步:将你需要播放的音频(mp3)放在你WPF项目的D ...
- Vue 前端面试题[转]
https://mp.weixin.qq.com/s/Uxhx2dJ1Xbm6N3Gl7wNZNw Vue 前端面试题 游荡de蝌蚪 前端开发 1周前 作者:游荡de蝌蚪 https://segmen ...
- 树状数组 简单题 cf 961E
题目链接 : https://codeforces.com/problemset/problem/961/E One day Polycarp decided to rewatch his absol ...
- java第九次作业:第九章例题3个
作业1: 例题9.1 制作圆类,根据圆的半径求出周长及面积 package com.swift; //抽象的方法构成类,把属性和方法进行封装 public class Circle { // 两个方面 ...
- ZJOI2018游记Round1
广告 ZJOI2018Round2游记 All Falls Down 非常感谢学弟学妹们捧场游记虽然这是一篇假游记 ZJOI Round1今天正式落下帷幕.在这过去的三天里遇到了很多朋友,见识了很多有 ...
- mysql 5.5安装/卸载使用总结
安装 卸载 1.在控制面板->卸载与更改程序 中卸载mysql 2.删除安装目录下的mysql文件夹 3.删除隐藏文件夹C:\ProgramData\中的MySQL,否则再次安装时会卡在 sta ...
- (28)zabbix用户宏变量详解macro
zabbix宏变量让zabbix变得更灵活,变量可以定义在主机.模板以及全局,变量名称类似:{$MACRO},宏变量都是大写的.认识了宏变量,你会感叹zabbix越发的强大. 变量可以用于如下地方: ...
- FTP实验报告
FTP实验报告 制作人:全心全意 准备工作: linux1:192.168.100.4 关闭防火墙.selinux机制 配置yum源 匿名访问 1.安装vsftpd服务和客户端 [root@local ...