最近在玩Mybatis,感觉官方文档对于通过执行mapper接口和XML配置文件执行SQL的描述不是特别清楚,现在总结如下:
首先实现mapper接口:
import org.apache.ibatis.annotations.Select;
public interface UserMapper {
@Select("SELECT * FROM table01 WHERE id = #{id}")
User selectUser(int id);
}
在XML中配置SQL:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="mybatisModule.UserMapper">
<select id="xmlSelectUser" parameterType="int" resultType="User">
select name,password from table01 where id = #{id}
</select>
<select id="xmlSelectUsers" resultType="User">
select * from table01 order by id
</select>
</mapper>
于是我们就有了三句SQL,可以通过下面的方式执行这三句SQL:
public static void main(String[] args) throws SQLException, IOException{
SqlSessionFactory sessionFactory = SessionFactorySingleton.getSessionFactory();
SqlSession session = sessionFactory.openSession();
try{
//method 1: session.getMapper()调用接口
UserMapper mapper = session.getMapper(UserMapper.class);
User user1 = mapper.selectUser(6);
if(user1 != null){
System.out.println("user name:"+user1.getName());
}
else{
System.out.println("selected 0 row");
}
//method 2: session.selectOne()调用接口
User user2 = (User)session.selectOne("mybatisModule.UserMapper.selectUser",9);
if(user2 != null){
System.out.println("user name:"+user2.getName());
}
else{
System.out.println("selected 0 row");
}
//method 3: session.selectOne()调用XML配置文件
User user3 = (User)session.selectOne("mybatisModule.UserMapper.xmlSelectUser",6);
if(user3 != null){
System.out.println("user name:"+user3.getName());
}
else{
System.out.println("selected 0 row");
}
//查询得到多组数据
ArrayList<User> users = (ArrayList<User>)session.selectList("mybatisModule.UserMapper.xmlSelectUsers");
for(User u : users){
System.out.println(u.getId()+" : "+u.getName()+" : "+u.getPassword());
}
}finally{
session.close();
}
}
可能还有其他方式,但目前只发现这三种,欢迎指点讨论~~
分享到:
相关推荐
这篇博客“mybatis直接执行sql语句后续之一”可能探讨了如何在MyBatis中高效且有效地执行SQL操作。下面我们将深入探讨MyBatis的SQL执行机制及相关知识点。 首先,MyBatis的核心组件是SqlSessionFactory,它是创建...
if 、where、set、trim、choose 、foreach等在mybatis中的具体用法,有具体实例可供参考,玩转mybatis
MyBatis拦截器实践 - 在MyBatis执行SQL语句之前进行拦截处理实例 MyBatis作为一个流行的持久层框架,提供了强大的数据库交互能力,但是在某些特殊场景下,我们需要在MyBatis执行SQL语句之前进行拦截处理,这便需要...
本文将深入探讨如何在SpringBoot(整合MyBatis)和传统的SSM(Spring、SpringMVC、MyBatis)项目中,原样输出MyBatis的SQL执行语句,以便于开发者直观地检查SQL语句是否正确和高效,从而进行优化和调试。此方法对...
MyBatis是一个强大的持久层框架,它允许开发者直接编写SQL语句,简化了数据库操作。在本文中,我们将深入探讨如何使用MyBatis直接执行SQL查询以及如何进行数据的批量插入。 **一、直接执行SQL查询** 在MyBatis中,...
把 mybatis 输出的sql日志还原成完整的sql语句。 将日志输出的sql语句中的问号 ? 替换成真正的参数值。 通过 "Tools -> MyBatis Log Plugin" 菜单或快捷键 "Ctrl+Shift+Alt+O" 启用。 点击窗口左边的 "Filter" ...
在MyBatis与Spring整合的框架中,为了便于调试和性能优化,我们常常需要在日志中打印出执行的SQL语句。以下是如何在这样的环境中配置日志来显示SQL语句的详细步骤。 首先,我们需要了解MyBatis的日志实现。MyBatis...
在实际开发过程中,我们往往需要编写复杂的SQL语句,拼接稍有不注意就会导致错误,Mybatis给开发者提供了动态SQL,大大降低了拼接SQL导致的错误。 动态标签 if标签 if标签通常用那个胡where语句,update语句,insert...
拦截器监控慢SQL并将完整的可执行的SQL语句打印在日志文件中,复制该SQL语句即可在数据库工具中执行。 使用方法: 找到你springboot项目中的配置文件,增加如下配置即可 application.yml 配置如下: sql: slow...
Mapper接口则用于在Java代码中调用这些SQL,使得业务逻辑和SQL语句分离,提高了代码的可读性和可维护性。 在"Mybatis案例一所用建表语句"中,我们可以推测这是一个关于创建数据库表的示例。在MySQL中,建表语句...
标题 "idea插件mybaits log 打印sql语句" 涉及的是一个针对IntelliJ IDEA的MyBatis日志插件,它的主要功能是帮助开发者在开发过程中实时查看并打印出MyBatis执行的SQL语句。这个功能对于调试和优化数据库查询非常...
该工具可以将mybatis输出的sql日志提取出来,并将其格式化为可以直接执行的sql语句,节约开发人员时间
适用场景:生产环境从sql日志获取可执行sql语句 使用方法:从日志中获取完整的sql片段(可以前后多复制一部分,确保准确性),打开html文件,粘贴到输入框中点击解析sql,获得可执行的sql
MyBatis作为一款优秀的持久层框架,支持多种方式来定义SQL语句,包括XML配置文件和注解等方式。本文档主要介绍在XML配置文件中如何编写SQL语句,以及相关的属性配置。 #### 二、SQL语句占位符详解 在MyBatis中,...
解决MyBatis执行SQL语句部分参数返回NULL问题 MyBatis是一个流行的基于Java的持久层框架,使用广泛。但是,在使用MyBatis时,可能会遇到一些问题,例如执行SQL语句时部分参数返回NULL问题。本文将详细介绍该问题的...
在MyBatis中,拦截器用于在特定的执行点插入自定义行为,比如在SQL语句执行前或后。`AutoMapperInterceptor`实现了`org.apache.ibatis.plugin.Interceptor`接口,具备拦截执行方法的能力。它会检测到对Mapper接口的...
MyBatis 3 的 SQL 语句构建器是其核心特性之一,它提供了一种更加优雅、可读性更强的方式来构建动态 SQL。SQL 语句构建器支持多种风格的 SQL 编写,包括匿名内部类风格、Builder/Fluent 风格以及动态条件构建。 1. ...
MyBatis是一个流行的Java持久层框架,它允许开发者将SQL语句直接集成到XML或Java代码中,提供了灵活的数据访问层。通过使用SQL方言包,MyBatis能够更好地适应各种数据库,如MySQL、Oracle和DB2,使得在切换数据库时...
映射文件(通常是XML或注解形式)则包含了具体的SQL语句和结果映射,使得MyBatis能够根据这些信息执行SQL并返回结果。 在MyBatis中,SqlSessionFactory是一个关键组件,它是通过解析配置文件创建的。...