尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
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类型必须和接口中对应方法的返回值类型一致
RELATED

相关推荐

AIMNet2-rxn与传统DFT的终极对决:速度提升1000倍的秘密

AIMNet2-rxn与传统DFT的终极对决:速度提升1000倍的秘密

MindsDB内存泄漏检测终极指南:使用Valgrind工具快速定位和修复问题 【免费下载链接】mindsdb mindsdb/mindsdb: 是一个基于 SQLite 数据库的分布式数据库管理系统,它支持多种数据存储方式,包括 SQL 和 NoSQL。适合用于构建分布式数据库管理系…

📅 2026/9/5 22:11:45
Linux设备驱动匹配机制:从总线、设备、驱动到调试全解析

Linux设备驱动匹配机制:从总线、设备、驱动到调试全解析

1. 从“黑盒子”到“透明连接”:理解Linux设备匹配的本质如果你刚开始接触Linux驱动开发,可能会觉得设备驱动和设备匹配过程像个“黑盒子”。你照着教程写了一个platform_driver,定义了一个platform_device,然后系统启动时&#x…

📅 2026/9/5 7:29:22
Text-Replace文本替换攻击:eBPF如何实时修改文件内容与网络数据

Text-Replace文本替换攻击:eBPF如何实时修改文件内容与网络数据

Text-Replace文本替换攻击:eBPF如何实时修改文件内容与网络数据 【免费下载链接】bad-bpf A collection of eBPF programs demonstrating bad behavior, presented at DEF CON 29 项目地址: https://gitcode.com/gh_mirrors/ba/bad-bpf eBPF(Ext…

📅 2026/9/12 3:10:07
MORE NEWS

更多资讯

📰

江门seo方法哪家强?3步搞定服务器配置避坑指南

江门seo方法哪家强?3步搞定服务器配置避坑指南 域名买好了,服务器租了,网站却打不开?别慌,这是90%江门老板和运营新手的第一道坎。很多人在找 江门seo方法…

📰

10年建站老鸟整理的适合网络科技的公司名字速查手册

10年建站老鸟整理的适合网络科技的公司名字速查手册 改个需求建站公司拖一周,这种憋屈谁没经历过?刚上线的按钮改个颜色,对方回你“排期满了”,转头去问另一家,报价直接翻倍。很多老板在选建站公司时,光看案例漂亮,忽略了名字背后的业务逻辑。今天这…

📰

避坑指南:微信公众号链接微网站完整流程与选型

避坑指南:微信公众号链接微网站完整流程与选型 备案流程一头雾水?别慌,很多创业者卡在“域名能否关联公众号”和“服务器是否合规”这两道坎上。其实, 微信公众号链接微网站 并非简单的贴个链接,而是一套涉及域名解析、SSL加密、后端接口鉴权的…

📰

南京紫米网络科技有限公司最佳实践

不懂代码找建站哪家好?紫米网络实战拆解 自己不会代码想做网站,是不是打开浏览器就头大?搜“网站建设哪家好”,跳出来的全是广告,心里直打鼓。 南京紫米网络科技有限公司这类公司到底靠不靠谱?别急,咱们不聊虚的。…

📰

建设网站需要了解些什么问题?5大避坑注意事项全解析

建设网站需要了解些什么问题?5大避坑注意事项全解析 模板网站太丑不够用,这是很多老板找建站公司时脱口而出的第一句话。你花了几千块买个模板,结果上线后客户觉得像十年前的老黄历,转化率低得让人心梗。这时候再问“建设网站需要了解些什么问题”,其实…

📰

做网站需要多少钱?避开高价坑,搞定服务器与性能优化

做网站需要多少钱?避开高价坑,搞定服务器与性能优化 很多老板在咨询建站时,第一句话往往是:“你们这做网站需要多少源码下载?”或者更直接地问:“到底要花多少钱?”这种问法,通常暴露了一个核心焦虑:怕被建站公司坑高价,怕花大钱买个不值当的烂站,…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬