`

myBatis系列之二:以接口方式交互数据

阅读更多
myBatis系列之一:搭建开发环境
myBatis系列之三:增删改查
myBatis系列之四:关联数据的查询
myBatis系列之五:与Spring3集成
myBatis系列之六:与SpringMVC集成
myBatis系列之七:事务管理


myBatis系列之一:搭建开发环境是采用SqlSession的通用方法并强制转换的方式,存在着转换安全的问题:
User user = (User)session.selectOne("com.john.hbatis.model.UserMapper.getUserById", 1);


可以采用接口加sql语句的方式来解决,sql语句理解为是接口的实现:

1. 新建接口类:
package com.john.hbatis.mapper;

import com.john.hbatis.model.User;

public interface IUserMapper {
	User getUserById(int id);
}


2. 修改User.xml文件,确保namespace属性值和接口的全限定名相同,且id属性值和接口方法名相同:
<mapper namespace="com.john.hbatis.mapper.IUserMapper">
    <select id="getUserById"


3. 在MyBatisBasicTest类中添加测试方法:
	@Test
	public void queryInInterfaceWayTest() {
		SqlSession session = sqlSessionFactory.openSession();
		IUserMapper mapper = session.getMapper(IUserMapper.class); // 如果namespace和接口全限定名不一致,报org.apache.ibatis.binding.BindingException: Type interface com..IUserMapper is not known to the MapperRegistry异常。
		User user = mapper.getUserById(1);
		log.info("{}: {}", user.getName(), user.getAddress());
	}



附:
上面的实现是把sql语句放在XML文件中,并通过一定的约束来保证接口能够在XML中找到对应的SQL语句;
还有一种方式是通过接口+注解SQL方式来交互数据:

①. 新建接口类:
package com.john.hbatis.mapper;

import org.apache.ibatis.annotations.Select;

import com.john.hbatis.model.User;

public interface IUserMapper2 {
	@Select({ "select * from `user` where id = #{id}" })
	User getUserById(int id);
}


②. 在Configuration.xml文件中加入:
<mappers>
	<mapper class="com.john.hbatis.mapper.IUserMapper2" />
</mappers>


或在初始化语句中加入:
sqlSessionFactory.getConfiguration().addMapper(IUserMapper2.class);


③. 相应修改上面的测试方法:
IUserMapper2 mapper = session.getMapper(IUserMapper2.class);


参考:
http://www.yihaomen.com/article/java/304.htm
分享到:
评论

相关推荐

    基于Tk MyBatis框架,mybatis 注解方式实现数据的加解密

    "基于Tk MyBatis框架,mybatis 注解方式实现数据的加解密"这个主题就聚焦于如何在MyBatis框架中使用注解来实现在数据库交互过程中对数据的加密与解密。 首先,我们来看Tk MyBatis。Tk MyBatis是MyBatis的增强工具,...

    深入剖析MyBatis SQL执行流程:从配置到查询结果的全程追踪

    SqlSessionFactory是一个工厂,用于生成SqlSession实例,它是MyBatis与数据库交互的核心接口。 2. **SqlSession与Mapper对象** SqlSession提供了执行SQL语句的方法。在Spring环境中,SqlSession通常由Spring的...

    Mybatis notes系列博客配套资源

    1. **Mybatis 简介**:Mybatis 是一款轻量级的 ORM(Object-Relational Mapping)框架,它将 SQL 查询与 Java 代码分离,提供了一种灵活的方式来处理数据库交互。Mybatis 通过 XML 或注解的方式配置映射,将 Java ...

    Mybatis接口编程方式实现增删改查

    下面将详细介绍Mybatis接口编程方式实现增删改查的核心概念和技术。 1. **配置文件**:Mybatis的配置文件(mybatis-config.xml)是整个框架的核心,它包含了数据源、事务管理器以及映射文件的路径等信息。在实现...

    MyBatis和Spring整合jar:mybatis-3.2.7.jar等

    3. **创建Mapper接口**:编写Mapper接口,这些接口会继承MyBatis的Mapper接口,并定义对应的数据操作方法。 4. **Mapper XML文件**:为每个Mapper接口创建对应的XML文件,编写SQL语句和结果映射。 5. **扫描并注册...

    MyBatis的helloworld(不使用Mapper接口实现MyBatis查询数据库).zip

    这种方式虽然简化了开发过程,但没有充分利用MyBatis的动态SQL功能和Mapper接口的优势。在实际项目中,推荐使用Mapper接口,它提供了更好的类型安全性和代码可读性。不过,了解这种基础的使用方式有助于我们深入理解...

    Mybatis系列教程Mybatis源码剖析共15页.pd

    【标题】"Mybatis系列教程Mybatis源码剖析共15页.pdf" 是一份详细的Mybatis框架源码解析教程,涵盖了Mybatis的核心概念和技术细节。这份教程深入浅出地介绍了Mybatis如何工作,以及其背后的代码实现,对于理解...

    springMVC和mybatis,layui数据交互

    3. **服务层操作**:服务层通过DAO层与数据库交互,这里MyBatis的Mapper接口和XML文件用于执行SQL语句。例如,使用`@Autowired`注入Mapper接口,调用其方法获取数据。 4. **返回响应**:业务处理完成后,控制器将...

    mybatis学习总结:mybatis和spring, spring boot的集成

    在实际开发中,MyBatis的Mapper接口是与数据库交互的主要方式。开发者可以编写这些接口,每个方法对应一个SQL查询,通过MyBatis的XML映射文件或注解来定义具体的SQL语句。这种方式既保留了SQL的灵活性,又避免了手写...

    接口平台代码概览,框架使用springmvc+mybatis

    3. 缓存机制:MyBatis提供了本地缓存和二级缓存,可以有效减少对数据库的访问次数,提高性能。 4. 参数映射和结果映射:自动将Java对象与数据库查询结果进行映射,简化了数据操作。 结合Spring MVC和MyBatis,...

    MyBatis3 API 中文文档

    MyBatis作为一款优秀的持久层框架,主要解决了Java应用与数据库交互的问题。它支持普通的SQL查询、存储过程和高级映射,可以用来处理复杂的SQL,例如联表查询等,并且支持动态SQL语句,这在处理有较多条件判断的场景...

    使用mybatis进行数据处理的四种方式

    在IT领域,特别是数据库操作与框架应用中,MyBatis是一个极为重要的工具,它简化了Java应用程序与数据库交互的过程。本文将深入探讨使用MyBatis进行数据处理的四种主要方式:SqlSessionTemplate、...

    mybatis demo

    MyBatis 是一款深受开发者喜爱的持久层框架,它简化了Java应用程序与数据库之间的交互,提供了更为灵活的SQL映射和对象关系映射。在这个"mybatis demo"中,我们将会探讨MyBatis的一些核心概念和实践应用。 首先,`...

    MyBatis所需jar包 mybatis-3.4.5 整合spring可用

    Mapper接口是Java代码中与数据库交互的接口,而Mapper XML文件则包含了对应的SQL语句和结果映射。 整合MyBatis与Spring的主要目的是利用Spring的依赖注入(DI)和面向切面编程(AOP)特性,来管理MyBatis的...

    SpringBoot+mybatis+CXF开发web service接口.rar

    6. **实现服务逻辑**:在接口对应的Service类中实现业务逻辑,与MyBatis的Mapper交互,完成数据的增删改查。 7. **生成客户端代码**:使用CXF的代码生成工具,根据服务接口生成客户端调用的Stubs或JAX-WS客户端。 ...

    mybatis in practice 源代码

    5. **DAO层**:DAO接口和实现类负责与数据库的交互,通常会使用MyBatis的SqlSession进行 CRUD(创建、读取、更新、删除)操作。 6. **示例应用**:可能包含一个简单的Web应用程序,演示如何在实际项目中集成MyBatis...

    springmvc+mybatis+spring注解

    在"ssm"这个压缩包文件中,很可能包含了项目的基础结构,如pom.xml(Maven的配置文件),src/main/java目录下的Spring MVC、MyBatis和Service层的注解配置,以及相关的资源文件和配置文件,如mybatis的Mapper接口和...

    mybatis读取数据并提供rest接口访问

    要实现 MyBatis 读取数据并提供 REST 接口访问,首先我们需要搭建一个基本的 Java Web 项目,通常会使用 Maven 或 Gradle 作为构建工具。以下是一步步实现这个功能的步骤: 1. **引入依赖**: 在项目的 `pom.xml` ...

    mybatis所需必备架包

    MyBatis是一个强大的Java持久层框架,它简化了数据库与Java应用程序之间的交互,使得开发者能够更专注于SQL编写,而不是繁琐的JDBC代码。这个压缩包文件"mybatis架包"显然是为了帮助用户快速搭建和配置MyBatis开发...

    Mybatis-plus基于redis实现二级缓存过程解析

    在Mybatis-plus中,二级缓存是指在应用程序中使用Redis作为缓存层,存储查询结果,以便下次查询时直接从缓存中获取数据,减少数据库查询操作的次数。 在本文中,我们将介绍如何使用Mybatis-plus基于Redis实现二级...

Global site tag (gtag.js) - Google Analytics