news 2026/7/31 19:02:47

Mybatis快速入门大全(详细版)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Mybatis快速入门大全(详细版)

MyBatis是一款流行的持久层框架,简化了JDBC操作。以下是其基础入门语法:

1.核心配置文件(mybatis-config.xml)

用于配置数据库连接和映射文件位置。

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPEconfigurationPUBLIC"-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><environmentsdefault="development"><environmentid="development"><transactionManagertype="JDBC"/><dataSourcetype="POOLED"><propertyname="driver"value="com.mysql.cj.jdbc.Driver"/><propertyname="url"value="jdbc:mysql://localhost:3306/test"/><propertyname="username"value="root"/><propertyname="password"value="password"/></dataSource></environment></environments><mappers><mapperresource="UserMapper.xml"/></mappers></configuration>

2.SQL映射文件(UserMapper.xml)

定义SQL语句与Java方法的映射关系。

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="com.example.mapper.UserMapper"><!-- 查询单个用户 --><selectid="selectUser"parameterType="int"resultType="com.example.entity.User">SELECT * FROM users WHERE id = #{id}</select><!-- 插入用户 --><insertid="insertUser"parameterType="com.example.entity.User">INSERT INTO users (name, age) VALUES (#{name}, #{age})<!-- 获取自增主键 --><selectKeykeyProperty="id"resultType="int"order="AFTER">SELECT LAST_INSERT_ID()</selectKey></insert></mapper>

3.Java实体类(User.java)

对应数据库表结构。

publicclassUser{privateIntegerid;privateStringname;privateIntegerage;// getters/setters}

4.Mapper接口(UserMapper.java)

定义操作数据库的方法。

publicinterfaceUserMapper{UserselectUser(intid);intinsertUser(Useruser);}

5.获取SqlSession并执行操作

// 加载配置文件InputStreaminputStream=Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactorysqlSessionFactory=newSqlSessionFactoryBuilder().build(inputStream);// 执行查询try(SqlSessionsession=sqlSessionFactory.openSession()){UserMappermapper=session.getMapper(UserMapper.class);Useruser=mapper.selectUser(1);System.out.println(user.getName());}

6.动态SQL

根据条件动态生成SQL语句。

<selectid="findUsers"resultType="User">SELECT * FROM users<where><iftest="name != null">AND name = #{name}</if><iftest="age != null">AND age&gt;#{age}</if></where></select>

7.参数处理

  • #{}:预编译处理(防止SQL注入)
  • ${}:直接替换(用于表名、列名等)
<selectid="selectUsers"resultType="User">SELECT * FROM ${tableName} WHERE age > #{minAge}</select>

8.结果映射

处理列名与属性名不一致的情况。

<resultMapid="userResultMap"type="User"><idproperty="id"column="user_id"/><resultproperty="name"column="user_name"/></resultMap><selectid="selectUser"resultMap="userResultMap">SELECT user_id, user_name FROM users WHERE id = #{id}</select>

9.事务管理

SqlSessionsession=sqlSessionFactory.openSession(false);// 手动提交try{UserMappermapper=session.getMapper(UserMapper.class);mapper.insertUser(user1);mapper.insertUser(user2);session.commit();// 提交事务}catch(Exceptione){session.rollback();// 回滚事务throwe;}finally{session.close();}

10.注解方式(替代XML)

publicinterfaceUserMapper{@Select("SELECT * FROM users WHERE id = #{id}")UserselectUser(intid);@Insert("INSERT INTO users (name, age) VALUES (#{name}, #{age})")@Options(useGeneratedKeys=true,keyProperty="id")intinsertUser(Useruser);}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/31 19:02:03

VRCT终极教程:VRChat跨语言交流的完整解决方案

VRCT终极教程&#xff1a;VRChat跨语言交流的完整解决方案 【免费下载链接】VRCT VRCT(VRChat Chatbox Translator & Transcription) 项目地址: https://gitcode.com/gh_mirrors/vr/VRCT VRCT&#xff08;VRChat Chatbox Translator & Transcription&#xff09…

作者头像 李华
网站建设 2026/7/31 18:59:07

CnOpenData 上市公司公众号信息表

据《上市公司信息披露管理办法》&#xff0c;上市公司作为信息披露义务人&#xff0c;应真实、准确、及时、完整地向市场公开依法及自愿披露的信息。这些公开披露的信息包含但不仅限于公司基本情况、主要会计数据和财务指标、股东持股情况、高管薪酬情况等。上市公司信息披露是…

作者头像 李华
网站建设 2026/7/31 18:58:29

AI 在高通平台camera中的应用:从影像链路到端侧模型的全栈解析

手机拍照里的"AI"到底是什么&#xff1f;是营销话术&#xff0c;还是真实跑在 NPU 上的神经网络&#xff1f;本文以高通平台为背景&#xff0c;把 AI 影像拆到管线节点级别&#xff1a;它在链路的哪个位置、用什么模型、模型多大规模、跑多快、权重从哪来、会不会&qu…

作者头像 李华
网站建设 2026/7/31 18:57:18

OpenWork扩展开发工具链详解:提升开发效率的必备资源

OpenWork扩展开发工具链详解&#xff1a;提升开发效率的必备资源 【免费下载链接】openwork The open-source alternative to Claude Cowork (powered by opencode) 项目地址: https://gitcode.com/GitHub_Trending/ope/openwork OpenWork作为Claude Cowork的开源替代方…

作者头像 李华
网站建设 2026/7/31 18:56:40

7 月技术写作回顾:写了 310 篇文章,最重要的 10 个结论

7 月技术写作回顾&#xff1a;写了 310 篇文章&#xff0c;最重要的 10 个结论 一、310 篇文章背后&#xff0c;不是数字&#xff0c;是认知迭代 7 月持续 31 天&#xff0c;按日均 10 篇的节奏产出&#xff0c;总产出量 310 篇。这个数字不算小&#xff0c;但比数字更有价值…

作者头像 李华