通过自动回复机器人学Mybatis笔记:接口式编程
【接口式编程】尚未遇见Spring --> 代码量反而增加
1、增加约定,减少犯错的可能(不用直接去写字符串
修改点1:命名空间

修改点2:增加接口,方法名与配置文件中的id对应
package com.imooc.dao; import java.util.List; import com.imooc.bean.Message; /**
*
* 与配置文件Message相对应的接口
*
*/
public interface IMessage {
// 代言SQL语句
public List<Message> queryMessageList(Message message); public void deleteOne(int id); public void deleteBatch(List<Integer> ids);
}
修改点3:修改DAO层调用SQL的方式
package com.imooc.dao; import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List; import org.apache.ibatis.session.SqlSession; import com.imooc.bean.Message;
import com.imooc.db.DBAccess; /**
* 和message表相关的数据库操作
*/
public class MessageDAO { public List<Message> queryMessageList(String command, String description) {
DBAccess dbAccess = new DBAccess();
SqlSession sqlSession = null;
List<Message> messageList = null;
try {
sqlSession = dbAccess.getSqlSession();
Message message = new Message();
message.setCommand(command);
message.setDescription(description);
// 通过sqlSession执行SQL语句
IMessage iMessage = sqlSession.getMapper(IMessage.class);
messageList = iMessage.queryMessageList(message);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
return messageList;
} /**
* 单条删除
*/
public void deletOne(int id) {
DBAccess dbAccess = new DBAccess();
SqlSession sqlSession = null;
try {
sqlSession = dbAccess.getSqlSession();
// 通过sqlSession执行SQL语句
IMessage iMessage = sqlSession.getMapper(IMessage.class);
iMessage.deleteOne(id);
sqlSession.commit();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
} /**
* 删除多条消息
*/
public void deleteBatch(List<Integer> ids) {
DBAccess dbAccess = new DBAccess();
SqlSession sqlSession = null;
try {
sqlSession = dbAccess.getSqlSession();
// 通过sqlSession执行SQL语句
IMessage iMessage = sqlSession.getMapper(IMessage.class);
iMessage.deleteBatch(ids);
sqlSession.commit();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
}
}
【只写接口,不写实现】
1、添加依赖包
2、编写 XxxDAO 接口 (结果集 + 行为 + 参数)
3、用 XxxDAO.xml 实现接口( SQL)
通过自动回复机器人学Mybatis笔记:接口式编程的更多相关文章
- 通过自动回复机器人学Mybatis 笔记:接口式编程
		
[接口式编程]尚未遇见Spring --> 代码量反而增加 1.增加约定,减少犯错的可能(不用直接去写字符串 修改点1:命名空间 修改点2:增加接口,方法名与配置文件中的id对应 package ...
 - MyBatis的接口式编程Demo
		
很久没细看过MyBatis了,时间一长就容易忘记. 下面是一个接口式编程的例子. 这里的例子一共分为4步: 1 首先要有一个namespace为接口的全类名的映射文件,该例中是 IMyUser.xml ...
 - Mybatis面向接口式编程
		
Mybatis面向接口编程 1.xml文件书写格式 <?xml version="1.0" encoding="UTF-8" ?> <!DOC ...
 - MyBatis源码解析【7】接口式编程
		
前言 这个分类比较连续,如果这里看不懂,或者第一次看,请回顾之前的博客 http://www.cnblogs.com/linkstar/category/1027239.html 修改例子 在我们实际 ...
 - mybaits接口式编程
		
Mybatis是接口式编程实现对.xml中sql语句的执行,其过程如下(取自慕课网视频<通过自动回复机器人学Mybatis---加强版>): 1.加载配置信息2.通过加载配置信息加载一个代 ...
 - Mybatis笔记二:接口式编程
		
目录 旧方法的弊端 接口式编程 接口式编程的好处 接口式编程的增删改查 旧方法的弊端 在Mybatis笔记一中,我们使用命名空间+id的方式实现了Mybatis的执行,不过这里的命名空间是我们随便写的 ...
 - MyBatis3-topic04,05 -接口式编程
		
笔记要点 /**接口式编程: * 1. 原生: Dao 接口-->Dao接口的实现类 * mybatis: Mapper --> 有一个与之对应的 XXMapper.xml * 2. Sq ...
 - MyBatis接口式编程
		
MyBatis使用接口连接数据库 之前学习了如何传统的使用MyBatis连接数据库,今天学习如何使用更方便快捷的方式练级数据库.使用接口连接数据库 https://www.cnblogs.com/li ...
 - SpringBoot实战派读书笔记---响应式编程
		
1.什么是WebFlux? WebFlux不需要Servlet API,在完全异步且无阻塞,并通过Reactor项目实现了Reactor Streams规范. WebFlux可以在资源有限的情况下提高 ...
 
随机推荐
- 比较好用的Opera 翻译工具  ddict
			
http://ddict.me
 - jpa单向多对一关联映射
			
表结构 student class Class package auth.model; import javax.persistence.Column; import javax.persistenc ...
 - 利用CSS3制作淡入淡出动画效果
			
CSS3新增动画属性“@-webkit-keyframes”,从字面就可以看出其含义——关键帧,这与Flash中的含义一致. 利用CSS3制作动画效果其原理与Flash一样,我们需要定义关键帧处的状态 ...
 - org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade 解决方案 (网络转载)
			
前提是配置了cascade=all,依然报这种错误,其实出现这个错误的大多数情况根本不是像网上的帖子所说的是什么级联删除的问题,而且hibernate session关于实体生命周期操作的原因,这里明 ...
 - IDEA安装Python环境,并加入Anaconda环境
			
为什么做这个事情? 1.首先,Anaconda中已经有各种科学计算环境,包括后面安装的tensorflow 2.通过IDEA中配置就达到了Scala.Python.Java同时运行的目的. Intel ...
 - sevlet实现反盗链
			
有时候为了网站的版权和安全问题,我们需要为我们的网站应用设置防盗链,这样可以保证我们网站的一些资源的安全性.防盗链的主要是通过获取http的请求头referer的信息来和我们的网站地址做对比,如果相同 ...
 - 通过TZ来设置嵌入式ARM+Linux的时区
			
1.在/etc/profile或者/root/.profile(/home/username/.profile) 在其中加入: TZ=UTC-08:00 export TZ hwclock -s
 - node.js使用require给flume提交请求
			
node.js使用require给flume提交请求 - 简书 https://www.jianshu.com/p/02c20e2d011a 玄月府的小妖在debug 关注 2017.04 ...
 - End-to-End Speech Recognition in English and Mandarin
			
w语音识别.噪音.方言,算法迭代. https://arxiv.org/abs/1512.02595 We show that an end-to-end deep learning approach ...
 - 多进程使用matplotlib.pyplot绘heatmap(多线程不可以)
			
数据格式如下: 8_15/l_eye/2732.png -20.5773 -5.17769 -3.34583 21.5859 9_13_1/l_eye/1211.png -10.1145 34.992 ...