Mybatis中使用Dao实现类实现增删改查【实际开发中使用代理dao】
在Mybatis开发中,使用到的是代理Dao的方式实现增删改查,这样就不需要在写Dao的实现类
但是Mybatis也支持写Dao实现类!即DaoImpl
直接上DaoImpl,之前的代码可以参考前面几篇文章。
DaoImpl类
package com.itheima.dao.impl;import com.itheima.dao.IUserDao;
import com.itheima.domain.QueryVo;
import com.itheima.domain.User;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;import java.util.List;/*** Created by Administrator on 2019/10/15.*/
public class UserDaoImpl implements IUserDao {private SqlSessionFactory factory;public UserDaoImpl(SqlSessionFactory factory) {this.factory = factory;}@Overridepublic List<User> findAll() {// 1、根据factory获取Sqlsession对象SqlSession sqlSession = factory.openSession();
// 2、调用SqlSession中的方法,实现查询列表List<User> user = sqlSession.selectList("com.itheima.dao.IUserDao.findAll");//参数就是能获取配置信息的keyfor (User use : user) {System.out.println(use);}
// 3、释放资源sqlSession.close();return user;}@Overridepublic void saveUser(User user) {SqlSession sqlSession = factory.openSession();sqlSession.insert("com.itheima.dao.IUserDao.saveUser",user);sqlSession.commit();sqlSession.close();}@Overridepublic void updateUser(User user) {SqlSession sqlSession = factory.openSession();sqlSession.update("com.itheima.dao.IUserDao.updateUser",user);sqlSession.commit();sqlSession.close();}@Overridepublic void deleteUser(Integer userId) {SqlSession sqlSession = factory.openSession();sqlSession.update("com.itheima.dao.IUserDao.deleteUser",userId);sqlSession.commit();sqlSession.close();}@Overridepublic User findById(Integer userId) {SqlSession sqlSession = factory.openSession();User user = sqlSession.selectOne("com.itheima.dao.IUserDao.findById", userId);sqlSession.commit();sqlSession.close();return user;}@Overridepublic List<User> findByName(String username) {SqlSession sqlSession = factory.openSession();
// 2、调用SqlSession中的方法,实现查询列表List<User> user = sqlSession.selectList("com.itheima.dao.IUserDao.findByName",username);//参数就是能获取配置信息的key
// 3、释放资源sqlSession.close();return user;}@Overridepublic int findUserCount() {SqlSession sqlSession = factory.openSession();Integer count = sqlSession.selectOne("com.itheima.dao.IUserDao.findUserCount");return count;}@Overridepublic List<User> findUserByVo(QueryVo vo) {return null;}
}
单元测试
package com.itheima.test;import com.itheima.dao.IUserDao;
import com.itheima.dao.impl.UserDaoImpl;
import com.itheima.domain.QueryVo;
import com.itheima.domain.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;import java.io.InputStream;
import java.util.Date;
import java.util.List;/*** 测试Mybatis的crud操作*/
public class mybatis {private InputStream in;private IUserDao userDao;@Before //用于在测试方法之前执行public void init() throws Exception {// 1、读取配置文件,生成字节输入流in = Resources.getResourceAsStream("SqlMapConfig.xml");// 2、获取sqlSessionfactorySqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);// 3、使用工厂对象,创建dao对象userDao = new UserDaoImpl(factory);}@After //用于在测试方法之后执行public void destory() throws Exception {in.close();}/*** 测试查询所有*/@Testpublic void findAll() {// 5、执行查询所有方法List<User> users = userDao.findAll();for (User user : users) {System.out.println(user);}}/*** 测试保存操作*/@Testpublic void testSave() {User user = new User();user.setUsername("张XX");user.setAddress("北京 海淀区");user.setSex("男");user.setBirthday(new Date());System.out.println("保存之前"+user);userDao.saveUser(user);System.out.println("保存之后"+user);}/*** 测试更新操作*/@Testpublic void testUpdate() {User user = new User();user.setId(52);user.setUsername("张XXABC");user.setAddress("北京 海淀区");user.setSex("男");user.setBirthday(new Date());userDao.updateUser(user);}/*** 测试删除操作*/@Testpublic void testDelete() {userDao.deleteUser(51);}/*** 测试id查询一个用户*/@Testpublic void testFindById() {// 5、执行查询所有方法User user = userDao.findById(48);System.out.println(user.getId());System.out.println(user.getAddress());System.out.println(user.getBirthday());System.out.println(user.getUsername());}/*** 测试模糊查询*/@Testpublic void testFindByName() {// 5、执行查询所有方法List<User> users = userDao.findByName("%王%");for (User user : users){System.out.println(user);}}/*** 查询用户总个数*/@Testpublic void testFindUserCount(){int count = userDao.findUserCount();System.out.println(count);}@Testpublic void testFindByQueryVo(){QueryVo queryVo = new QueryVo();User user = new User();user.setUsername("%王%");queryVo.setUser(user);List<User> users = userDao.findUserByVo(queryVo);for(User use :users){System.out.println(use);}}
}
Mybatis中使用Dao实现类实现增删改查【实际开发中使用代理dao】相关推荐
- Spring Boot入门系列(十八)整合mybatis,使用注解的方式实现增删改查
之前介绍了Spring Boot 整合mybatis 使用xml配置的方式实现增删改查,还介绍了自定义mapper 实现复杂多表关联查询.虽然目前 mybatis 使用xml 配置的方式 已经极大减轻 ...
- java 怎么快速找到实现类_JAVA懒开发:FreeMarker快速实现类的增删改查接口
太懒,不多说看图,mybatis-generator工具执行后的项目结构 这个时候没得额service接口类,和service实现类,也没的controller类 执行引擎工具类BeanGenerat ...
- 数据操作类:增删改查
一.数据连接类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...
- 如何 增删改查 XML文件中的元素
如何 增删改查 XML文件中的元素 students.xml 文件如下: <?xml version="1.0" encoding="UTF-8" sta ...
- DBUtils工具类实现增删改查
DBUtils工具类实现增删改查 一.数据库连接池Druid工具类 二.DBUtils实现增删改 三.DBUtils实现查询单条数据 四.DBUtils实现查询批量数据 五.DBUtils实现按键值对 ...
- Flask+VUE 实现页面增删改查显示开发+测试(图文教程附源码)
目录 一.新建项目并初始化 二.安装依赖 axios.elementUI 三.Vue代码 四.进行接口联调 五.后端接口优化 六.web页面功能测试 七.总结 八.展望 九.附录(截止发文时的代码) ...
- ORM框架之Mybatis(一)基于mapper配置增删改查
Mybatis是现在非常流行的SSM框架中的M部分,Mybatis也是一个主流的ORM框架,在项目中用来处理持久层数据. 一.Mybatis框架介绍及使用 1.1 mybatis框架概述: mybat ...
- Mybatis入门:2(xml形式的增删改查)
xml形式的增删改查 这里感觉没啥好讲的,照着代码自己敲一遍.认真再看看应该都懂的. Maven工程坐标 <?xml version="1.0" encoding=" ...
- 使用jsp+dao完成注册和增删改查
目录 1.登录 2.登录成功跳转的页面 3.注册流程 2.将某个表中的信息展示到网页中 4.添加员工信息 5.员工信息的删除 6.员工信息的修改 目录 1.登录 2.登录成功跳转的页面 3.注册流程 ...
最新文章
- Go 知识点(15)— 切片长度和容量
- 739. Daily Temperatures
- CoolPad backdoor CoolReaper
- angularjs 1.3 综合学习 (one way bind , ng-if , ng-switch , ng-messages, ng-form ,ng-model )
- LSTM实现股票预测--pytorch版本【120+行代码】
- Spring Boot中使用Swagger2构建RESTful APIs
- NodeJS实现TCPSocket(套接字)服务器和客户端
- iostat命令(转)
- vue 点击div 获取位置_vue 点击元素滚动到指定位置
- java 常用富文本编辑器_常用的六个富文本编辑器
- java流程图平行四边形_流程图图形标准含义
- ie visio 打开_Visio viewer 不能从IE打开vsd文件
- 搞定短视频!批量下载快手视频(附源码)
- 小米手机通过USB连接MAC电脑
- 基于艾宾浩斯遗忘曲线的APP(大学毕业设计)
- ACM模板 | 学习笔记 数学相关
- 小程序配置服务器域名
- 使用Postfix和Dovecot部署邮件系统
- MATLAB实现RSA加密解密
- macOS下使用命令行制作 MacOS cdr/iso 镜像文件
热门文章
- YUV常用的两种保存方式_YUY2和YV12
- King Gym - 102471H
- 【学习笔记】信息学竞赛中的概率与期望小结
- 数论三之排列组合Ⅱ——Virus Tree 2,RGB Coloring,123 Triangle,排列计数,排队,卡农
- CF453C:Little Pony and Summer Sun Celebration(dfs、构造)
- YBTOJ:彩球抽取(期望)
- 线性筛素数的实现与证明
- 2021牛客OI赛前集训营-方格计数【计数,dp】
- [科技]Loj#6564-最长公共子序列【bitset】
- P5304-[GXOI/GZOI2019]旅行者【最短路】