`

使用mybatis3.0 annotation接口简化数据访问

阅读更多

数据访问进化简史,比较简单,不负责能跑起来

  • 一、原始的sql

 

select address from user where name='test'

 

  • 二、jdbc

 

//若干操作
String sql="select address from user where name='"+name+"'";
//执行
//解析结果
//包括若干个try catch


解决了java到数据库的访问,但是存在大量的复制代码,并且异常需要自己处理

  • 三、ibatis2.0代码

 

<!--大量的XML定义文件-->
<select id="queryAddressByName" parameterType="String" resultType="String">
	select address from user where name=#{name}
</select>
Class UserDao{
	//大量的常量定义
	final static private String QUERY_ADDRESS_BY_NAME= getClass()+"queryAddressByName";

	String queryAddressByName(final String name){
		final String address=sqlMapper.selectforObject(QUERY_ADDRESS_BY_NAME, name);
		return address;
	}
}

 

主要优势

 

  1. sql和java代码分离
  2. 不需要关注数据库连接和关闭
  3. 不需要关注数据获取方式
主要不足
  1. 大量的xml及后续管理问题
  2. 会看到大量的final static String QUERY_ADDRESS_BY_NAME= getClass()+"queryAddressByName"这样的sqlmapper名字

 

 

  • 四、Mybatis 3.0
Mybatis 3.0通过引入注解,解决了上述不足
@Select等注解减少XML文件
@repository注解使用接口减少常量定义
  • 4.1、@repository

 

@repository
interface UserMapper{
    String queryAddressByName(String name);
}

 

 

<select id="queryAddressByName" parameterType="String" resultType="String">
	select address from user where name=#{name}
</select>

 

此接口可以通过访问2.0的xml

并且spring的整合直接访问,使用方法名关联,不需要实现类

 

调用代码

Class UserDao{
	@autowired
	private userMapper mapper;

	String queryAddressByName(final String name){
		final String address=mapper.queryAddressByName(name);
		return address;
	}
}

主要改进:

  1. 2.0中大量的常量字符串被使用函数名称代替
  2. 与2.0原有xml资源能平稳过渡

 

 

  • 4.2、@Select和@Param等

 

@repository
interface userMapper{
    @select("select address from user where name=#{name}")
    String queryAddressByName(String name)
}


使用annotation方式下不需要产生xml,调用代码不变
对于同一个mapper接口来说可以混用xml和annotation方式

参数上的annotation

@repository
interface userMapper{
    @select("select address from user where name=#{name} and gender=#{gender}"
    String queryAddressByName(@param(value="name" String name, @param(value="gender") String gender)
}

 

参数annotation还可以和xml混搭

@repository
interface userMapper{
    String queryAddressByNameAndGender(@param(value="name" String name, @param(value="gender") String gender);
}
<select id="queryAddressByNameAndGender" resultType="String">
        select address from user where name=#{name} and gender=#{gender}
</select>

主要改进;

 

  • xml被大量减少,管理难度降低

 

  • Ibatis annotation的优势

 

 

  • 减少xml,减少了java到xml的映射,目前的IDE上java用起来还是要比xml友好
  • 通过接口访问而不是类似2.0中字符串指定sqlmapper名,看不到一堆常量String
  • 通过在mapper接口参数上的@param可以输入多个参数,减少模糊化的hashmap使用,让接口定义更加精确

 

 

分享到:
评论

相关推荐

    struts2 spring2.5 hibernate3.0 annotation 整合

    整合这三个框架的目的是实现数据访问、业务逻辑和用户界面的解耦,提高代码的可复用性和可测试性。具体步骤如下: 1. **配置Struts2**:在web.xml中配置Struts2的核心过滤器,设置Action的默认结果类型等。 2. **...

    springboot集成mybatis

    这种集成方式简化了传统MyBatis的配置,使得Spring Boot应用可以更快速地实现数据访问功能。 总结一下,Spring Boot集成MyBatis的主要步骤包括: 1. 添加MyBatis Starter依赖。 2. 配置数据源。 3. 可选:创建...

    Spring与Mybatis集成

    数据源是数据库连接的载体,SqlSessionFactory是Mybatis的核心对象,用于创建SqlSession,而MapperScannerConfigurer则是扫描项目中的Mapper接口,自动将它们与XML配置文件对应起来。 1. 数据源配置: 在Spring...

    Spring Boot整合Mybatis

    当我们需要在Spring Boot项目中整合MyBatis时,可以实现高效且灵活的数据访问。 首先,我们要理解Spring Boot的核心特性之一是自动配置。在整合MyBatis时,Spring Boot会自动配置MyBatis的相关组件,如...

    SpringBoot整合Mybatis示例源码

    SpringBoot和Mybatis是两个非常流行的Java开发框架,...通过运行该项目,你可以看到如何在SpringBoot应用中优雅地使用Mybatis进行数据访问。这个集成方案降低了项目的复杂性,同时也保持了代码的可读性和可维护性。

    springmybatis

    MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录. orm工具的基本思想 无论是用过的hibernate,mybatis,你都可以法相他们有一个...

    Mybatis中文版教程

    - **数据映射器类**:通常情况下,我们会定义一个接口作为数据映射器,然后使用 `MapperFactoryBean` 来注入该接口的实现。示例如下: 假设有一个名为 `UserMapper` 的映射器接口: ```java public interface ...

    spring3.0jar包集合

    Spring 3.0提供了对多种数据访问技术的集成,包括JDBC、Hibernate、MyBatis等ORM框架,使得数据库操作更加简单和灵活。此外,Spring的事务管理功能可以在不同数据访问技术之间提供一致的事务策略。 5. **批注驱动...

    spring boot 集成 mybatis

    Spring Boot以其简洁的配置和自动配置特性,极大地简化了Java应用程序的开发过程。MyBatis则是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射,使得数据库操作变得简单易行。下面,我们将逐步介绍...

    Spring集成MyBatis简单demo

    在Java Web开发中,Spring和MyBatis是两个非常重要的框架。Spring是一个全面的后端...在实际开发中,还可以根据需求进一步优化,如使用Spring Boot简化配置,或者使用MyBatis的Mapper XML文件来定制更复杂的SQL语句。

    Mybatis+oracle

    将Mybatis与Oracle结合,可以创建高效、灵活的数据访问应用。下面将详细阐述如何在Java项目中使用Mybatis来连接和操作Oracle数据库。 1. **Mybatis简介**: Mybatis 是一个基于Java的持久层框架,它解决了Java对象...

    SpringBoot 2.0.2.RELEASE以XML的形式整合 Mybatis (SpringBoot 2.0.2.RELEASE版本)

    这样,你已经成功地在SpringBoot 2.0.2.RELEASE项目中集成了Mybatis并通过XML方式定义了数据访问操作。接下来,你可以在服务类中注入Mapper接口,使用注解`@Autowired`,并通过Mapper方法进行数据库查询。 例如,...

    spring搭建mybatis

    在IDE中运行项目,通过单元测试或浏览器访问接口进行测试,验证Spring和MyBatis的集成是否正常工作。 通过以上步骤,你已经成功地在Spring环境中搭建了MyBatis框架,并实现了基本的CRUD操作。这只是一个简单的示例...

    struts2 + spring + mybatis 注解开发

    在这个项目中,我们利用Struts2作为表现层框架,Spring3.0作为控制层和持久层的管理工具,而Mybatis则作为数据访问层的实现。现在,我们将深入探讨这三大框架的注解开发方式。 **Struts2框架注解** Struts2是基于...

    springboot 整合mybatis 亲测 非常简单就能用了

    例如,如果项目中包含`CURD_baomidou-master`这个文件,这可能意味着已经引入了MyBatis Plus,那么在Mapper接口和XML文件中就可以直接使用它的注解来进行更加简便的操作,如自动插入、更新、删除等。 总的来说,...

    SpringBoot 集成 Mybatis

    而Mybatis作为一款轻量级的持久层框架,以其灵活的数据访问机制和强大的映射功能,成为了许多开发者的选择。本教程将详细介绍如何在Spring Boot项目中集成Mybatis,以实现高效的数据操作。 首先,我们需要理解...

    6.SpringBoot整合mybatis实现登录

    在本教程中,我们将深入探讨如何使用Spring Boot与MyBatis框架集成来实现一个登录功能。Spring Boot简化了Spring应用程序的开发过程,而MyBatis则是一个轻量级的持久层框架,它允许开发者直接编写SQL,使得数据库...

    MyBatis与Spring整合——通过官方文档进行最简单的整合

    MyBatis可以使用简单的XML或注解来进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 #### 三、Spring框架简介 Spring框架是用于构建企业级Java应用程序的...

Global site tag (gtag.js) - Google Analytics