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

《MyBatis进阶记:当字段名开始“叛逆“》

各位代码冒险家,还记得我们上次那个乖巧的Student类吗?它长大了,进入了"叛逆期"!现在的它不再是那个简单的"四有青年",而是变成了一个"我有我主张"的个性少年。

第一章:Student的"叛逆宣言"

看这个叛逆的字段名:
java
private String s_sex;  // 原来叫sex,现在非要加个前缀!

原来的`sex`字段被注释掉了,取而代之的是`s_sex`。这就像一个人突然说:"我不叫张三了,请叫我'超级张三·风暴降生'!"

更搞笑的是,数据库里的字段还叫`sex`,这就产生了"命名不一致的悲剧"。好在MyBatis派出了救兵——`resultMap`!

 第二章:resultMap——字段名的"婚姻介绍所"

xml
<resultMap id="demo" type="com.qcby.entity.Student">
<result column="sex" property="s_sex"></result>
</resultMap>

这个`resultMap`就像一个耐心的媒婆,对数据库说:"你那边叫'sex'是吧?别担心,我们这边虽然叫's_sex',但我来帮你们牵线搭桥!"

有了它,`select * from student`这个简单的查询也能正确匹配了。这就是"名字不一样,照样做朋友"的典范!

第三章:StudentDao的"功能大爆发"

原来的Dao接口只是个光说不练的"空想家",现在它变成了真正的"实干派":

java
public interface StudentDao {
public List<Student> findAll();        // 查全部
public Student findById(int id);       // 按ID精确查找
public int insert(Student student);    // 插入新学生
public int delete(int id);             // 删除学生
public int update(Student student);    // 修改信息
public List<Student> findByName(String name); // 模糊查找
}

这就像一个人突然学会了十八般武艺,从"只会吃饭"升级到了"满汉全席大厨"!

第四章:XML里的"SQL魔法大全"

每个方法都有对应的SQL咒语,其中最有趣的是这个:

xml
<select id="findByName" resultType="com.qcby.entity.Student" parameterType="java.lang.String">
select * from student where name like '%${value}%'
</select>

这行代码就像在说:"数据库老弟,帮我找名字里带'张'的所有人,不管'张'在名字的哪个位置!"

但注意看注释里的重要提示:
- #{} 是乖孩子,会防SQL注入
- ${} 是野孩子,直接拼接SQL,有风险!

这就好比:
- #{}:礼貌敲门:"请问'张'先生在吗?"
- ${}:破门而入:"我找名字里有张的!都出来!"

第五章:TestStudent的"专业升级"

原来的测试类像个"业余玩家",现在变成了"专业选手":

java
@Before
public void init() throws IOException {
// 初始化工作:准备战场!
}

@After
public void destory() throws IOException {
// 清理工作:打扫战场!
}

有了@Before和@After,测试方法变得干净利落,就像有了专业的"开场白"和"结束语"。

最搞笑的是被注释掉的`insert`和`update`测试方法,它们就像两个被禁足的孩子,只能在代码里眼巴巴地看着别人玩耍:

java
// @Test
// public void insert() {
//     Student student = new Student();
//     student.setName("cici");
//     student.setAge(20);
//     student.setSex("女");  // 等等,这个setSex()不是被注释掉了吗?
// }

看到问题了吗?`Student`类里根本没有`setSex()`方法了,只有`setS_sex()`!这就像试图用一个过期的密码开锁——注定失败!

第六章:事务管理的"潜规则"

注意看这些修改操作后面的这行代码:
java
session.commit();  // 提交事务!

没有这行代码,你的修改就像写在了沙滩上——潮水一来就没了。MyBatis默认不会自动提交,这就像银行转账需要你最后点"确认"一样。

代码世界的"人生哲理"

1. 命名一致性很重要:字段名变来变去,最后苦的是`resultMap`这个"和事佬"
2. 安全第一:能用`#{}`就别用`${}`,就像能用安全带就别玩命
3. 测试要全面:别让某些测试方法永远被注释,它们会"寂寞"的
4. 事务要提交:做了事情要确认,不然等于白干

结语

这次的代码升级就像一场"青春期的成长":
Student学会了"个性命名"
Dao接口学会了"多项技能"
测试类学会了"专业素养"

唯一没变的是:MyBatis依然是我们可靠的"数据红娘",即使字段名再怎么"叛逆",它都能想办法让数据库和Java对象"喜结连理"!

🎯 程序员心得:在代码的世界里,不一致是常态,解决方案才是王道!下次遇到字段名对不上的情况,记得请出resultMap这位"和事佬"哦!

http://www.dtcms.com/a/406742.html

相关文章:

  • 如何筛选并下载高质量Landsat影像:
  • html网站列表怎么做茶叶网站建设目的
  • 让数据触手可及采用Chat2DB+cpolar重构数据库操作体验
  • 仿造别人的网站侵权吗建e全景效果图
  • 优选算法的寻踪契合:字符串专题
  • 光伏运维可视化大屏,解锁管理新方式
  • 环境变量管理于美国服务器多环境部署的实施标准
  • 自己做的网站放在服务器哪里怎么建自己的手机网站吗
  • Efficient Motion-Aware Video MLLM论文阅读
  • 信息化网站建设引言施工企业年终总结及明年工作计划
  • spring项目编译时出现警告需要发行版本9
  • PMP-项目管理-PMBOK第六版_中文版:项目管理标准
  • C语言:自定义类型——联合体和枚举
  • 一文讲清数据指标怎么搭建
  • markdown基础语法及效果演示
  • EC19111304触摸三档定时开关芯片 电容式触控延时开关IC方案SOP-8
  • VideoChat-Flash论文阅读
  • 网站建设功能定位怎么写宜春做网站哪里好
  • 免费建设淘客网站上海网站建设多少费用
  • 数字孪生实施路径揭秘:从数据采集到业务赋能
  • 单片机--usart总线
  • Ansible详解(二)playbook剧本详解
  • 消消乐(双指针)
  • 兰州网站建设推荐q479185700顶上北京营销型网站建站公司
  • KingBaseES V9R1C10数据库安装体验
  • 自动化接口框架搭建分享-pytest第二部分
  • 禹城网站制作贵阳建设职业技术学院招聘信息网站
  • 语义三角论对人工智能自然语言处理深层语义分析的影响与启示
  • 小杰机器学习(nine)——支持向量机
  • 神经网络torch学习路线规划