`
zhangfeilo
  • 浏览: 397458 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
社区版块
存档分类
最新评论

Mybatis执行SQL语句的方式

阅读更多

最近在玩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();
		}
	}

可能还有其他方式,但目前只发现这三种,欢迎指点讨论~~

0
5
分享到:
评论

相关推荐

    mybatis直接执行sql语句后续之一

    这篇博客“mybatis直接执行sql语句后续之一”可能探讨了如何在MyBatis中高效且有效地执行SQL操作。下面我们将深入探讨MyBatis的SQL执行机制及相关知识点。 首先,MyBatis的核心组件是SqlSessionFactory,它是创建...

    mybatis动态SQL语句

    if 、where、set、trim、choose 、foreach等在mybatis中的具体用法,有具体实例可供参考,玩转mybatis

    在mybatis执行SQL语句之前进行拦击处理实例

    MyBatis拦截器实践 - 在MyBatis执行SQL语句之前进行拦截处理实例 MyBatis作为一个流行的持久层框架,提供了强大的数据库交互能力,但是在某些特殊场景下,我们需要在MyBatis执行SQL语句之前进行拦截处理,这便需要...

    原样输出mybatis的sql执行语句(mysql和oracle都可用).zip

    本文将深入探讨如何在SpringBoot(整合MyBatis)和传统的SSM(Spring、SpringMVC、MyBatis)项目中,原样输出MyBatis的SQL执行语句,以便于开发者直观地检查SQL语句是否正确和高效,从而进行优化和调试。此方法对...

    ideal mybatis打印sql插件

    把 mybatis 输出的sql日志还原成完整的sql语句。 将日志输出的sql语句中的问号 ? 替换成真正的参数值。 通过 "Tools -&gt; MyBatis Log Plugin" 菜单或快捷键 "Ctrl+Shift+Alt+O" 启用。 点击窗口左边的 "Filter" ...

    详解MyBatis直接执行SQL查询及数据批量插入

    MyBatis是一个强大的持久层框架,它允许开发者直接编写SQL语句,简化了数据库操作。在本文中,我们将深入探讨如何使用MyBatis直接执行SQL查询以及如何进行数据的批量插入。 **一、直接执行SQL查询** 在MyBatis中,...

    mybatis慢SQL插件

    拦截器监控慢SQL并将完整的可执行的SQL语句打印在日志文件中,复制该SQL语句即可在数据库工具中执行。 使用方法: 找到你springboot项目中的配置文件,增加如下配置即可 application.yml 配置如下: sql: slow...

    mybatis+spring 框架中配置日志中显示sql语句

    在MyBatis与Spring整合的框架中,为了便于调试和性能优化,我们常常需要在日志中打印出执行的SQL语句。以下是如何在这样的环境中配置日志来显示SQL语句的详细步骤。 首先,我们需要了解MyBatis的日志实现。MyBatis...

    mybatis 动态sql及参数传递

    在实际开发过程中,我们往往需要编写复杂的SQL语句,拼接稍有不注意就会导致错误,Mybatis给开发者提供了动态SQL,大大降低了拼接SQL导致的错误。 动态标签 if标签 if标签通常用那个胡where语句,update语句,insert...

    Mybatis日志SQL解析工具

    该工具可以将mybatis输出的sql日志提取出来,并将其格式化为可以直接执行的sql语句,节约开发人员时间

    解决mybatis执行SQL语句部分参数返回NULL问题

    解决MyBatis执行SQL语句部分参数返回NULL问题 MyBatis是一个流行的基于Java的持久层框架,使用广泛。但是,在使用MyBatis时,可能会遇到一些问题,例如执行SQL语句时部分参数返回NULL问题。本文将详细介绍该问题的...

    Mybatis中SQL语句的编写.pdf

    MyBatis作为一款优秀的持久层框架,支持多种方式来定义SQL语句,包括XML配置文件和注解等方式。本文档主要介绍在XML配置文件中如何编写SQL语句,以及相关的属性配置。 #### 二、SQL语句占位符详解 在MyBatis中,...

    从mybatis日志中解析出可执行的sql语句

    适用场景:生产环境从sql日志获取可执行sql语句 使用方法:从日志中获取完整的sql片段(可以前后多复制一部分,确保准确性),打开html文件,粘贴到输入框中点击解析sql,获得可执行的sql

    idea插件mybaits log 打印sql语句

    标题 "idea插件mybaits log 打印sql语句" 涉及的是一个针对IntelliJ IDEA的MyBatis日志插件,它的主要功能是帮助开发者在开发过程中实时查看并打印出MyBatis执行的SQL语句。这个功能对于调试和优化数据库查询非常...

    Mybatis案例一所用建表语句

    Mapper接口则用于在Java代码中调用这些SQL,使得业务逻辑和SQL语句分离,提高了代码的可读性和可维护性。 在"Mybatis案例一所用建表语句"中,我们可以推测这是一个关于创建数据库表的示例。在MySQL中,建表语句...

    mybatis自动sql生成插件源码

    在MyBatis中,拦截器用于在特定的执行点插入自定义行为,比如在SQL语句执行前或后。`AutoMapperInterceptor`实现了`org.apache.ibatis.plugin.Interceptor`接口,具备拦截执行方法的能力。它会检测到对Mapper接口的...

    MyBatis 3 _ SQL 语句构建器1

    MyBatis 3 的 SQL 语句构建器是其核心特性之一,它提供了一种更加优雅、可读性更强的方式来构建动态 SQL。SQL 语句构建器支持多种风格的 SQL 编写,包括匿名内部类风格、Builder/Fluent 风格以及动态条件构建。 1. ...

    mybatis拦截器修改执行sql语句

    1.网上搜索了很多,几乎都是能修改sql, 但是修改后的sql不生效,还是执行原来的sql. 2.这个版本亲测可以生效。 3.支持分页查询

    MyBatis 执行动态 SQL语句详解

    首先,我们要理解 MyBatis 中的 SQL 执行方式。基础的 SQL 执行可以通过在 Mapper XML 文件中定义 `&lt;select&gt;` 标签,然后在对应的 Mapper 接口中声明方法,传递 SQL 语句作为参数。例如,一个简单的 SQL 语句 `...

Global site tag (gtag.js) - Google Analytics