mybatis注解开发
mybatis可以使用xml文件来写sql语句,也可以通过注解来编写简单的sql语句,参考官方文档
可以理解为简单的一些语法可以使用注解来编写,比较方便,但是复杂的语句还是要使用xml文件,只有使用xml文件才能体现mybatis的强大功能。
下面来学习使用注解。
在之前的开发中,我们使用mybatis,需要
1,配置文件,
2,然后创建dao接口,定义方法
3,再然后就要创建mapper.xml文件,在mapper.xml文件中编写sql语句,
4,最后再把mapper文件配置在mybatis主配置文件中就可以进行测试了
使用注解的方式,我们可以在dao接口中直接在方法上写sql语句,不需要创建mapper文件了
创建一个dao接口:先写一些最简单的语句,例如这些最基本的增删改查的语句,我们可以不使用mapper文件直接使用注解来写
public interface IEmpDAO { @Select("select * from emp") List<Emp> allEmp(); @Insert("insert into emp (ename,job,deptno,sal,hiredate) value(#{ename},#{job},#{deptno},#{sal},#{hiredate})") int insertEmp(Emp emp); @Update("update emp set ename=#{ename} where empno=#{empno}") int updateEmp(Emp emp); @Delete("delete from emp where empno=#{empno}") int deleteEmp(int empno); }
使用注解也需要在mybatis配置文件中配置mapper
测试上面的方法:
public class TestSql { public static void main(String[] args) { SqlSession sqlSession = SqlFactory.getSqlSession(); IEmpDAO mapper = sqlSession.getMapper(IEmpDAO.class); List<Emp> emps = mapper.allEmp(); System.out.println(emps); int i = mapper.insertEmp(new Emp(0, "张三", "保安", 3, 5000.00, new Date())); sqlSession.commit(); System.out.println(i+"-------------------"); int i1 = mapper.updateEmp(new Emp(4, "小明")); System.out.println(i1 + "+++++++++++++++++++++++++"); sqlSession.commit(); int i2 = mapper.deleteEmp(6); sqlSession.commit(); System.out.println(i2); sqlSession.close(); } }
上面介绍了最简单的注解使用,mybatis其实提供了大量的注解用来替换xml文件,注解表格官方文档如下:
下面学习一下使用注解如何配置结果集。
我们经常会用到的就是联表查询
测试
上面的方法是配置返回结果集的注解配置,也可以在mapper映射文件中配置结果集,然后通过注解引用mapper文件的映射结果集:
创建mapper文件,配置结果集映射,
然后再接口上使用resultMap注解配置结果集映射名:
注解内的值mapper中ResultMap的id值,记的在配置文件中配置mapper
还可以在注解中使用条件查询,编辑标签
测试
传空值查询所有:
传递员工编号查询单个员工信息
在注解中使用条件查询时,需要将所有的语句放在<script>标签中
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义