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()); }
相关推荐
SqlSessionFactory是一个工厂,用于生成SqlSession实例,它是MyBatis与数据库交互的核心接口。 2. **SqlSession与Mapper对象** SqlSession提供了执行SQL语句的方法。在Spring环境中,SqlSession通常由Spring的...
1. **Mybatis 简介**:Mybatis 是一款轻量级的 ORM(Object-Relational Mapping)框架,它将 SQL 查询与 Java 代码分离,提供了一种灵活的方式来处理数据库交互。Mybatis 通过 XML 或注解的方式配置映射,将 Java ...
"基于Tk MyBatis框架,mybatis 注解方式实现数据的加解密"这个主题就聚焦于如何在MyBatis框架中使用注解来实现在数据库交互过程中对数据的加密与解密。 首先,我们来看Tk MyBatis。Tk MyBatis是MyBatis的增强工具,...
下面将详细介绍Mybatis接口编程方式实现增删改查的核心概念和技术。 1. **配置文件**:Mybatis的配置文件(mybatis-config.xml)是整个框架的核心,它包含了数据源、事务管理器以及映射文件的路径等信息。在实现...
3. **创建Mapper接口**:编写Mapper接口,这些接口会继承MyBatis的Mapper接口,并定义对应的数据操作方法。 4. **Mapper XML文件**:为每个Mapper接口创建对应的XML文件,编写SQL语句和结果映射。 5. **扫描并注册...
这种方式虽然简化了开发过程,但没有充分利用MyBatis的动态SQL功能和Mapper接口的优势。在实际项目中,推荐使用Mapper接口,它提供了更好的类型安全性和代码可读性。不过,了解这种基础的使用方式有助于我们深入理解...
【标题】"Mybatis系列教程Mybatis源码剖析共15页.pdf" 是一份详细的Mybatis框架源码解析教程,涵盖了Mybatis的核心概念和技术细节。这份教程深入浅出地介绍了Mybatis如何工作,以及其背后的代码实现,对于理解...
3. **服务层操作**:服务层通过DAO层与数据库交互,这里MyBatis的Mapper接口和XML文件用于执行SQL语句。例如,使用`@Autowired`注入Mapper接口,调用其方法获取数据。 4. **返回响应**:业务处理完成后,控制器将...
在实际开发中,MyBatis的Mapper接口是与数据库交互的主要方式。开发者可以编写这些接口,每个方法对应一个SQL查询,通过MyBatis的XML映射文件或注解来定义具体的SQL语句。这种方式既保留了SQL的灵活性,又避免了手写...
3. 缓存机制:MyBatis提供了本地缓存和二级缓存,可以有效减少对数据库的访问次数,提高性能。 4. 参数映射和结果映射:自动将Java对象与数据库查询结果进行映射,简化了数据操作。 结合Spring MVC和MyBatis,...
MyBatis作为一款优秀的持久层框架,主要解决了Java应用与数据库交互的问题。它支持普通的SQL查询、存储过程和高级映射,可以用来处理复杂的SQL,例如联表查询等,并且支持动态SQL语句,这在处理有较多条件判断的场景...
在IT领域,特别是数据库操作与框架应用中,MyBatis是一个极为重要的工具,它简化了Java应用程序与数据库交互的过程。本文将深入探讨使用MyBatis进行数据处理的四种主要方式:SqlSessionTemplate、...
MyBatis 是一款深受开发者喜爱的持久层框架,它简化了Java应用程序与数据库之间的交互,提供了更为灵活的SQL映射和对象关系映射。在这个"mybatis demo"中,我们将会探讨MyBatis的一些核心概念和实践应用。 首先,`...
Mapper接口是Java代码中与数据库交互的接口,而Mapper XML文件则包含了对应的SQL语句和结果映射。 整合MyBatis与Spring的主要目的是利用Spring的依赖注入(DI)和面向切面编程(AOP)特性,来管理MyBatis的...
6. **实现服务逻辑**:在接口对应的Service类中实现业务逻辑,与MyBatis的Mapper交互,完成数据的增删改查。 7. **生成客户端代码**:使用CXF的代码生成工具,根据服务接口生成客户端调用的Stubs或JAX-WS客户端。 ...
5. **DAO层**:DAO接口和实现类负责与数据库的交互,通常会使用MyBatis的SqlSession进行 CRUD(创建、读取、更新、删除)操作。 6. **示例应用**:可能包含一个简单的Web应用程序,演示如何在实际项目中集成MyBatis...
在"ssm"这个压缩包文件中,很可能包含了项目的基础结构,如pom.xml(Maven的配置文件),src/main/java目录下的Spring MVC、MyBatis和Service层的注解配置,以及相关的资源文件和配置文件,如mybatis的Mapper接口和...
要实现 MyBatis 读取数据并提供 REST 接口访问,首先我们需要搭建一个基本的 Java Web 项目,通常会使用 Maven 或 Gradle 作为构建工具。以下是一步步实现这个功能的步骤: 1. **引入依赖**: 在项目的 `pom.xml` ...
MyBatis是一个强大的Java持久层框架,它简化了数据库与Java应用程序之间的交互,使得开发者能够更专注于SQL编写,而不是繁琐的JDBC代码。这个压缩包文件"mybatis架包"显然是为了帮助用户快速搭建和配置MyBatis开发...
在Mybatis-plus中,二级缓存是指在应用程序中使用Redis作为缓存层,存储查询结果,以便下次查询时直接从缓存中获取数据,减少数据库查询操作的次数。 在本文中,我们将介绍如何使用Mybatis-plus基于Redis实现二级...