当前位置: 首页 > news >正文

MyBatis——MyBatis的原始Dao开发(了解)

MyBatis的原始Dao开发-了解

使用Mybatis开发Dao,通常有两个方法,即原始Dao开发方式和Mapper接口代理开发方式。而现在主流的开发方式是接口代理开发方式,这种方式总体上更加简便。在之前的文章已经给大家介绍了基于代理方式的dao开发,现在给大家介绍一下基于传统编写Dao实现类的开发方式。

拷贝之前的工程:

在这里插入图片描述

1.创建接口

public interface UserDao {//查询所有User信息public List<User> findAll();//根据id查询Userpublic User findUserById(Integer id);//保存用户信息public void saveUser(User user);//修改用户public void updateUser(User user);//删除用户public void deleteUserById(Integer id);
}

2.创建接口实现类

public class UserDaoImpl implements UserDao {private SqlSession sqlSession;public UserDaoImpl(SqlSession sqlSession) {this.sqlSession = sqlSession;}public List<User> selectAll() {List<User> userList = sqlSession.selectList("com.wt.dao.UserDao.findAll");sqlSession.close();return userList;}public User selectUserById(Integer id) {User user = sqlSession.selectOne("com.wt.dao.UserDao.findUserById", id);sqlSession.close();return user;}public void saveUser(User user) {sqlSession.insert("com.wt.dao.UserDao.saveUser", user);sqlSession.commit();sqlSession.close();}public void updateUser(User user) {sqlSession.update("com.wt.dao.UserDao.updateUser", user);sqlSession.commit();sqlSession.close();}public void deleteUserById(Integer id) {sqlSession.delete("com.wt.dao.UserDao.deleteUserById", id);sqlSession.commit();sqlSession.close();}
}

3.定义映射文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wt.dao.UserDao"><!--查询所有用户信息--><select id="findAll" resultType="com.wt.pojo.User">select * from user</select><!--根据id查询用户信息--><select id="findUserById" parameterType="int" resultType="com.wt.pojo.User">select * from user where id=#{id}</select><!--保存用户信息--><insert id="saveUser" parameterType="com.wt.pojo.User">insert into user(username,password,birthday,sex,address) values(#{username},#{password},#{birthday},#{sex},#{address});</insert><!--修改用户信息--><update id="updateUser" parameterType="com.wt.pojo.User">update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id}</update><!--删除用户--><delete id="deleteUserById" parameterType="int">delete from user where id=#{id}</delete>
</mapper>

4.测试

public class MyBatisTest {private InputStream inputStream;//数据库会话实例private SqlSession sqlSession;@Beforepublic void createSqlSession() throws IOException {//1.Resources:加载配置文件String resource = "SqlMapConfig.xml";inputStream = Resources.getResourceAsStream(resource);//2.SqlSessionFactoryBuilder:构建SqlSessionFactory工厂//3.sqlSessionFactory:创建SqlSession对象SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//4.SqlSession:创建代理对象sqlSession = sqlSessionFactory.openSession();}@Testpublic void testFindAll() throws Exception{UserDao userDao = new UserDaoImpl(sqlSession);List<User> userList = userDao.findAll();for(User user : userList){System.out.println(user);}}@Testpublic void testFindUserById(){UserDao userDao = new UserDaoImpl(sqlSession);User user = userDao.findUserById(42);System.out.println(user);}@Testpublic void testSaveUser(){UserDao userDao = new UserDaoImpl(sqlSession);User user = new User();user.setUsername("张宇");user.setPassword("111");user.setBirthday(new Date());user.setSex("男");user.setAddress("台湾");userDao.saveUser(user);}@Testpublic void testUpdateUser(){UserDao userDao = new UserDaoImpl(sqlSession);User user = new User();user.setUsername("张二宇");user.setPassword("222");user.setBirthday(new Date());user.setSex("男");user.setAddress("香港");user.setId(50);userDao.updateUser(user);}@Testpublic void testDeleteUser(){UserDao userDao = new UserDaoImpl(sqlSession);userDao.deleteUserById(50);}@Afterpublic void closeSqlSession() throws IOException {sqlSession.close();inputStream.close();}
}

相关文章:

  • 类和对象(中篇)
  • SpringBlade export-user SQL 注入漏洞复现
  • Qt 国际化——创建中英文翻译步骤
  • Linux线程——条件变量
  • 快速能访问服务器的文件
  • Web请求与响应
  • 修改blackd源码,实现 black + isort
  • 银行测试:第三方支付平台业务流,功能/性能/安全测试方法
  • 最新国内可用使用GPT4.0,GPT语音对话,Midjourney绘画,DALL-E3文生图
  • MySQL基本操作 DDL DML DQL三大操作介绍
  • vue打包内存问题解决办法<--- Last few GCs ---><--- JS stacktrace --->
  • linux驱动的学习 驱动开发初识
  • 命令执行 [SWPUCTF 2021 新生赛]babyrce
  • 服务器直接配置免密登录
  • 你想改win11系统中窗口、菜单等的字体? 微软不想让你改
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 0基础学习移动端适配
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • canvas 高仿 Apple Watch 表盘
  • gitlab-ci配置详解(一)
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • JavaScript类型识别
  • node学习系列之简单文件上传
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 如何胜任知名企业的商业数据分析师?
  • 入口文件开始,分析Vue源码实现
  • 十年未变!安全,谁之责?(下)
  • 通过git安装npm私有模块
  • 用jquery写贪吃蛇
  • 智能合约Solidity教程-事件和日志(一)
  • Java数据解析之JSON
  • RDS-Mysql 物理备份恢复到本地数据库上
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • 阿里云ACE认证之理解CDN技术
  • 选择阿里云数据库HBase版十大理由
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • #pragma pack(1)
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (42)STM32——LCD显示屏实验笔记
  • (6)添加vue-cookie
  • (7)STL算法之交换赋值
  • (笔试题)分解质因式
  • (读书笔记)Javascript高级程序设计---ECMAScript基础
  • (简单) HDU 2612 Find a way,BFS。
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (强烈推荐)移动端音视频从零到上手(下)
  • (三)elasticsearch 源码之启动流程分析
  • (四)汇编语言——简单程序
  • (学习日记)2024.03.25:UCOSIII第二十二节:系统启动流程详解
  • (一)VirtualBox安装增强功能
  • (转)创业的注意事项
  • (轉貼) UML中文FAQ (OO) (UML)
  • (自适应手机端)响应式新闻博客知识类pbootcms网站模板 自媒体运营博客网站源码下载
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等