恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

02-框架--Mybatis

  • 首页
  • 资讯中心
  • /
  • 02-框架--Mybatis

相关资讯

AIMNet2-rxn与传统DFT的终极对决:速度提升1000倍的秘密 2026/8/8 22:42:20
Linux设备驱动匹配机制:从总线、设备、驱动到调试全解析 2026/8/8 22:42:20
Python复刻Chrome小恐龙游戏:Pygame实战与游戏开发核心原理 2026/8/8 22:37:19

最新资讯

LLM上下文压缩:从成本控制到性能优化的工程实践
5家门店实测2项关键食材差异 十堰院子风火锅风味参考
3种价位档位蘸料细节对比,十堰人气火锅店实用参考
自动采集外部群分享链接的内容解析
对比4类项目课程设置,人工智能国际EMBA差异在哪
WebShell攻击原理与防御实战:从PayloadsAllTheThings到纵深安全体系

今日推荐

Java图像处理实战指南
昇腾AI代理实现多号通话自动化
2026年Graph+AI Agents最新创新思路

本周热门

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案
分布式配置中心选型实战:Nacos与Consul在创业场景下的对比
MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案

本月精选

如何用DamaiHelper实现演唱会门票的智能自动化抢购:完整技术解决方案指南
第4篇:59 倍性能差距的索引瓶颈定位——一次教科书级的全表扫描调优
终极歌词批量下载神器:5分钟解决离线音乐库歌词同步难题

02-框架--Mybatis

发布时间:2026/8/8 22:42:20
02-框架--Mybatis 1.为什么要学习Mybatis框架Mybatis是持久层框架JDBC缺点1、操作的复杂度偏高2、数据的查询结果集处理繁琐3、sql硬编码sql和java代码混合写了Mybatis:1、需要配置文件2、直接把查询结果集的数据映射到实体类属性中3、把所有的sql统一的在文件中进行编写映射文件xxx.xml2. 运行流程配置文件sqlsession及其封装不分内容需要改动比如数据库名字?xml version1.0 encodingUTF-8 ? !DOCTYPE configuration PUBLIC -//mybatis.org//DTD Config 3.0//EN http://mybatis.org/dtd/mybatis-3-config.dtd !-- MyBatis 的核心配置文件它是整个 MyBatis 框架的总指挥负责配置 MyBatis 的全局行为和数据库连接信息 -- configuration !--在控制台打印sql语句的配置-- settings !-- 打印sql日志 -- setting namelogImpl valueSTDOUT_LOGGING / /settings !-- 别名设置 设置完之后再EmpMapper里面的parameterType直接等于emp-- typeAliases !-- 实体类bean、pojo、entity、domain -- !-- 指定包下面的所有类型都可以指定别名 ,默认是实体类名首字母小写-- package nameorg.example/ /typeAliases !--配置数据库-- environments defaultdevelopment environment iddevelopment transactionManager typeJDBC/ dataSource typePOOLED property namedriver valuecom.mysql.cj.jdbc.Driver/ !--jdbc:mysql://localhost:3306/mybatis?serverTimezoneUTC-- property nameurl valuejdbc:mysql://localhost:3306/tongda_88_95?serverTimezoneUTC/ property nameusername valueroot/ property namepassword value123456/ /dataSource /environment /environments mappers mapper resourceEmpMapper.xml/ mapper resourceDeptMapper.xml/ /mappers /configurationpackage org.example; 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 java.io.IOException; import java.io.InputStream; //是对GetSqlSession的封装二者作用一致MybatisUtil更便捷 /** * Author: Administrator * Date: 2026/8/8 * Description: */ public class MybatisUtil { public static SqlSession getSqlSession() { SqlSession sqlSession null; try { InputStream inputStream Resources.getResourceAsStream(SqlMapConfig.xml); //SqlSessionFactory SqlSessionFactory sqlSessionFactory new SqlSessionFactoryBuilder().build(inputStream); //默认不提交事务 true:提交事务 sqlSession sqlSessionFactory.openSession(true); } catch (IOException e) { throw new RuntimeException(e); } return sqlSession; } }3. Mybatis实现基本的CRUD操作3.1增加!--添加员工 为了防止sql注入把?用#{}替换 标签、标签的属性、内部sql parameterType:必须要写入自己的包名org.example然后写上.Emp-- insert idaddEmp parameterTypeemp insert into emp values (#{EMPNO},#{ENAME},#{JOB},#{MGR}, #{HIREDATE},#{SAL},#{COMM},#{DEPTNO}) /insertTest public void add() { SqlSession sqlSession MybatisUtil.getSqlSession(); Emp emp new Emp(); emp.setEMPNO(6666); emp.setENAME(王力); emp.setJOB(扫厕所); emp.setMGR(7782); emp.setHIREDATE(2010-10-10); emp.setSAL(20000); emp.setCOMM(100); emp.setDEPTNO(30); //参数一 namespace.id的值 //参数二实际传入的参数 sqlSession.insert(emp.addEmp, emp); }3.2删除!--删除,一般根据主键来删除-- !--parameterType可以写string和int stringjava.lang.String intint -- delete iddeleteEmp parameterTypejava.lang.String delete from emp where EMPNO#{EMPNO} /deleteTest public void text03(){ SqlSession sqlSession MybatisUtil.getSqlSession(); Emp emp new Emp(); sqlSession.delete(emp.deleteEmp, 6666); }3.3修改更新!--修改除了主键以外的数据都需要写上此为小测试可忽略-- update idupdateEmp parameterTypeemp update emp set JOB#{JOB} where ENAME王力 /updateTest public void text02(){ SqlSession sqlSession MybatisUtil.getSqlSession(); Emp emp new Emp(); emp.setJOB(敲代码); sqlSession.update(emp.updateEmp, emp); }3.4查找3.4.1单个查询!--查询单个查找(根据主键查询),resultType写表名,并且必须写parameterType可以省略-- select idqueryById parameterTypeemp resultTypeemp select*from emp where EMPNO#{EMPNO} /selectTest public void text04(){ SqlSession sqlSession MybatisUtil.getSqlSession(); Emp empsqlSession.selectOne(emp.queryById, 6666); System.out.println(emp); }3.4.2全部查询!--查询所有查找(根据主键查询)-- select idqueryAll parameterTypeemp resultTypeemp select*from emp /selectTest public void text05(){ SqlSession sqlSession MybatisUtil.getSqlSession(); ListEmp emps sqlSession.selectList(emp.queryAll); for (Emp emp : emps) { System.out.println(emp); } }3.4.3模糊查询!--模糊查询(直接写#{ENAME} %的话二者中间必须要空格所以改用concat),查找(根据主键查询)-- select idqueryLike parameterTypeemp resultTypeemp select*from emp where ENAME like concat(#{ENAME},%) /selectTest public void text06(){ SqlSession sqlSession MybatisUtil.getSqlSession(); ListEmp emps sqlSession.selectList(emp.queryLike,S); for (Emp emp : emps) { System.out.println(emp); } }3.5注意事项1、需要手动配置在控制台打印sql2、什么是Statement3、参数列表如果是类类型可以指定别名parameterType该属性可以不用写4、#{}:等同于PS中的?占位符 {实体类中对应属性的属性名}5、resultType属性不能少如果是集合类型只需要写出集合对应的泛型类型4. Mybatis代理开发4.1. 包结构4.2. 条件条件1、映射文件中的namespace必须是mapper接口的类路径2、statement的id的值必须和mapper接口中对应的方法的名字要一致3、statement的parameterType类型必须和接口中对应的方法的参数类型一致4、statement的resultType类型必须和接口中对应方法的返回值类型一致

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号