`

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

阅读更多

        myBatis系列之一:搭建开发环境是采用SqlSession的通用方法并强制转换的方式,存在着转换安全的问题: 

User user = (User) session.selectOne("com.bijian.study.model.UserMapper.getUserById", 1);

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

一.新建接口类

package com.bijian.study.dao;

import java.util.List;

import com.bijian.study.model.Article;
import com.bijian.study.model.User;

public interface IUserMapper {

    User getUserById(int id);
}

 

二.修改User.xml文件

        确保namespace属性值和接口的全限定名相同,且id属性值和接口方法名相同: 

<?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="com.bijian.study.dao.IUserMapper">
	<select id="getUserById" parameterType="int" resultType="User">
		select *
		from `user` where id = #{id}
	</select>
</mapper>

 

三.在MyBatisBasicTest类中添加测试方法

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

 

附: 

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

1.新建接口类

package com.bijian.study.dao;

import org.apache.ibatis.annotations.Select;

import com.bijian.study.model.User;

public interface IUserMapper2 {

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

 

2.在Configuration.xml文件中加入 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
	<typeAliases><!-- 别名 -->
		<typeAlias alias="User" type="com.bijian.study.model.User" />
	</typeAliases>
	
	<environments default="development">
	  <environment id="development">
		<transactionManager type="JDBC"/>
		<dataSource type="POOLED"><!-- 数据源 -->
			<property name="driver" value="com.mysql.jdbc.Driver" />
			<property name="url" value="jdbc:mysql://10.60.222.65:3306/test" />
			<property name="username" value="test" />
			<property name="password" value="test" />
		</dataSource>
	  </environment>
	</environments>
	
	<mappers><!-- ORM映射文件 -->
		<mapper class="com.bijian.study.dao.IUserMapper2" />
	</mappers>
</configuration>

        或在初始化语句中加入: 

sqlSessionFactory.getConfiguration().addMapper(IUserMapper2.class);  

        如下所示:

@BeforeClass
public static void initial() {
	try {
		reader = Resources.getResourceAsReader("Configuration.xml");
		sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
		sqlSessionFactory.getConfiguration().addMapper(IUserMapper2.class);
	} catch (IOException e) {
		log.error("Error thrown while reading the configuration: {}", e);
	} finally {
		if (reader != null) {
			try {
				reader.close();
			} catch (IOException e) {
				log.error("Error thrown while closing the reader: {}", e);
			}
		}
	}
}

 

3.相应修改上面的测试方法 

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

 

文章来源:http://czj4451.iteye.com/blog/1980569

分享到:
评论

相关推荐

    深入剖析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如何工作,以及其背后的代码实现,对于理解...

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

    "基于Tk MyBatis框架,mybatis 注解方式实现数据的加解密"这个主题就聚焦于如何在MyBatis框架中使用注解来实现在数据库交互过程中对数据的加密与解密。 首先,我们来看Tk MyBatis。Tk 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所需jar包 mybatis-3.4.5 整合spring可用

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

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

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

    mybatis demo

    MyBatis 是一款深受开发者喜爱的持久层框架,它简化了Java应用程序与数据库之间的交互,提供了更为灵活的SQL映射和对象关系映射。在这个"mybatis demo"中,我们将会探讨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...

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

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

    mybatis所需必备架包

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

    mybatis_mybatis_

    MyBatis 是一款在中国乃至全球广泛应用的开源持久层框架,它允许Java开发者将SQL语句直接集成到Java代码中,提供了灵活的映射机制,使得数据访问层的开发变得更加便捷和高效。本学习笔记深入剖析了MyBatis的核心概念...

    InfluxDB查询 导出数据 mybatis SpringBoot

    在这个场景中,"InfluxDB查询 导出数据 mybatis SpringBoot" 提到了几个关键的技术组件,它们分别是InfluxDB(时间序列数据库)、MyBatis(持久层框架)以及SpringBoot(快速开发框架)。下面我们将详细探讨这些技术...

Global site tag (gtag.js) - Google Analytics