最近在玩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();
}
}
可能还有其他方式,但目前只发现这三种,欢迎指点讨论~~
分享到:
相关推荐
if 、where、set、trim、choose 、foreach等在mybatis中的具体用法,有具体实例可供参考,玩转mybatis
NULL 博文链接:https://benworld.iteye.com/blog/1841031
适用于springboot(整合过mybatis的)和常规SSM项目,可以获取完整的mybatis执行的sql语句,用于直观的看到执行sql是否异常
本篇文章主要介绍了在mybatis执行SQL语句之前进行拦击处理实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
主要介绍了MyBatis直接执行SQL查询及数据批量插入的相关知识,需要的朋友一起学习吧
把 mybatis 输出的sql日志还原成完整的sql语句。 将日志输出的sql语句中的问号 ? 替换成真正的参数值。 通过 "Tools -> MyBatis Log Plugin" 菜单或快捷键 "Ctrl+Shift+Alt+O" 启用。 点击窗口左边的 "Filter" ...
在实际开发过程中,我们往往需要编写复杂的SQL语句,拼接稍有不注意就会导致错误,Mybatis给开发者提供了动态SQL,大大降低了拼接SQL导致的错误。 动态标签 if标签 if标签通常用那个胡where语句,update语句,insert...
拦截器监控慢SQL并将完整的可执行的SQL语句打印在日志文件中,复制该SQL语句即可在数据库工具中执行。 使用方法: 找到你springboot项目中的配置文件,增加如下配置即可 application.yml 配置如下: sql: slow...
mybatis+spring 框架中配置日志中显示sql语句
大家对mybatis执行任意sql语句都了解,那么MyBatis执行动态SQL语句呢?下面脚本之家小编给大家解答下mybatis执行动态sql语句的方法,非常不错,感兴趣的朋友参考下吧
该工具可以将mybatis输出的sql日志提取出来,并将其格式化为可以直接执行的sql语句,节约开发人员时间
1.网上搜索了很多,几乎都是能修改sql, 但是修改后的sql不生效,还是执行原来的sql. 2.这个版本亲测可以生效。 3.支持分页查询
mybatis动态sql
JDBC读取数据库元数据,生成JAVA实体类,SQL语句,Mybatis动态sql语句,详细内容见博客地址https://blog.csdn.net/zi971553/article/details/82862039
在Mabits中,动态SQL通常是通过使用一组特殊的标签和代码块来实现的,这些标签和代码块可以根据条件包含或排除不同的部分,从而生成不同的SQL语句。动态SQL可以让开发者构建更灵活、高效的数据库操作语句,因为他们...
在MyBatis中,动态SQL使用的主要方式是通过使用XML或注解来编写SQL语句。下面我将简单介绍一下MyBatis动态SQL的使用方法和常用的功能。 1. if标签:if标签是动态SQL中最常用的功能之一。它允许我们根据条件判断是否...
主要介绍了mybatis执行SQL语句部分参数返回NULL问题,需要的的朋友参考下吧
主要介绍了在IDEA中安装MyBatis Log Plugin插件,执行mybatis的sql语句,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
适用场景:生产环境从sql日志获取可执行sql语句 使用方法:从日志中获取完整的sql片段(可以前后多复制一部分,确保准确性),打开html文件,粘贴到输入框中点击解析sql,获得可执行的sql