MyBatis应用开发(3)应用之开发方式注解方式篇

1.1. 注解方式

1.1.1. 开发步骤

目标:使用MyBatis从数据库中查询t_person表的全部记录。

MyBatis还可以使用注解来配置数据库中的记录与Java对象之间的映射关系。此时SQL语句出现在Mapper接口的方法的注解中。优点是不再需要编写独立的Mapper配置文件。

使用MyBatis 的注解方式开发数据库应用的步骤如下所示:

(1)编写POJO类Person。

(2)编写Mapper接口PersonMapper。

(3)编写业务接口PersonService。

(4)编写业务实现类PersonServiceImpl。

(5)编写MyBatis总体配置文件SqlMapConfig.xml。

(6)编写log4j的配置文件log4j.properties。

(7)编写单元测试类PersonServiceTest。

本文仅仅列出与XML方式开发的步骤和代码有不同之处的步骤和代码,未列出的步骤和代码请参考XML方式的相关介绍。

1.1.2. 编写Mapper接口

与XML方式下编写的代码有所不同:为每一个方法增加了相应的MyBatis注解。这些注解代替了Mapper配置文件中的SQL语句配置的作用。以下代码中使用MyBatis的@Select注解代替了XML方式中的PersonMapper.xml文件中的select结点。

/**   

* @Title: PersonMapper.java

* @Package com.test.mybatis3.mapper

* @Description:

* @author http://www.cnblogs.com/coe2coe/

* @date 2017年4月9日 下午4:00:52

* @version V1.0   

*/

package com.test.mybatis3.mapper;

import java.util.List;

import com.test.mybatis3.pojo.Person;

/**

* @ClassName: PersonMapper Mapper接口

* @Description:

* @author http://www.cnblogs.com/coe2coe/

* @date 2017年4月9日 下午4:00:52

*  

*/

public interface PersonMapper {

/**

 * 查询所有记录。

 * 使用了注解方式,不再需要Mapper配置文件。

     * MyBatis 的Select注解描述了findAllPersons()方法和SQL语句的映射关系。

 * @return

 * @throws Exception

 */

@Select("select * from t_person order by id asc")

List<Person>  findAllPersons() throws Exception;

}

1.1.3. 编写总体配置文件

总体配置文件SqlMapConfig.xml和XML方式相比,区别在于mappers结点中不再配置PersonMapper.xml文件,而是配置PersonMapper接口的完整路径,字结点mapper中使用的不再是resource属性,而是class属性。

<?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>

<!-- 配置默认的运行环境 -->

<environments default="development">

<!-- -配置MyBatis运行环境中的各项参数 -->

<environment id="development">

<!-- 配置事务管理器 ,存在JDBC和MANAGED两种类型,目前使用JDBC即可。-->

<transactionManager type="JDBC"/>

<!-- 配置数据源,存在三种类型:UNPOOLED,POOLED,JNDI,目前使用POOLED即可。 -->

<dataSource type="POOLED">

<!-- 配置JDBC数据源的必备参数 -->

<property name="driver" value="com.mysql.jdbc.Driver"/>

<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>

<property name="username" value="test"/>

<property name="password" value="123456"/>

</dataSource>

</environment>

</environments>

<!--  配置基于注解方式的Mapper接口 -->

<mappers>

  <!--  配置基于注解方式的PersonMapper,

       此时不在需要Mapper配置文件:PersonMapper.xml -->

  <mapper class="com.test.mybatis3.mapper.PersonMapper" />

</mappers>

</configuration>

1.1.4. 编写单元测试

这里仅仅使用Mapper接口方式来访问数据库,与XML方式的Mapper接口方式的单元测试代码相同。

/**   

* @Title: PersonServiceTest.java

* @Package com.test.mybatis3.test

* @Description:

* @author http://www.cnblogs.com/coe2coe/

* @date 2017年4月9日 下午4:07:06

* @version V1.0   

*/

package com.test.mybatis3.test;

import java.io.InputStream;

import java.util.List;

import org.apache.ibatis.io.Resources;

import org.apache.ibatis.session.SqlSession;

import org.apache.ibatis.session.SqlSessionFactory;

import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import org.junit.Test;

import com.test.mybatis3.mapper.PersonMapper;

import com.test.mybatis3.pojo.Person;

import com.test.mybatis3.service.PersonService;

import com.test.mybatis3.service.impl.PersonServiceImpl;

/**

* @ClassName: PersonServiceTest

* @Description:

* @author http://www.cnblogs.com/coe2coe/

* @date 2017年4月9日 下午4:07:06

*  

*/

public class PersonServiceTest {

/**

 * 使用基于@Select注解的Mapper接口PersonMapper的方法来查询数据。

 * @throws Exception

 */

@Test

public void testFindAllPersonsByMapper() throws Exception

{

System.out.println("by Mapper");

//使用SqlMapConfig.xml配置文件。

InputStream  is = Resources.getResourceAsStream("SqlMapConfig.xml");

//构造MyBatis的SessionFactory对象.

SqlSessionFactory  sessionBuilder = new SqlSessionFactoryBuilder().build(is);

//将会指向MyBatis的Session对象实例。

SqlSession  session = null;

try{

//打开Session。

session = sessionBuilder.openSession();

//找到MyBatis自动实现的PersonMapper接口的代理对象。

PersonMapper  personMapper = session.getMapper(PersonMapper.class);

//创建PersonService接口的实现对象。

PersonService  personService = new PersonServiceImpl(personMapper);

//调用PersonService接口的findAllPersons()方法,

//内部会执行PersonMapper的findAllPersons()方法。

List<Person> persons = personService.findAllPersons();

//输出查询结果。

for(Person person : persons){

System.out.println(person);

}

}

catch(Exception ex){

ex.printStackTrace();

throw ex;

}

finally{

//确保关闭session对象。

if(null != session){

session.close();

session = null;

}

}

} 

}

运行结果如下:

by Mapper

0    [main] DEBUG com.test.mybatis3.mapper.PersonMapper.findAllPersons  - ==>  Preparing: select * from t_person order by id asc

57   [main] DEBUG com.test.mybatis3.mapper.PersonMapper.findAllPersons  - ==> Parameters:

135  [main] DEBUG com.test.mybatis3.mapper.PersonMapper.findAllPersons  - <==      Total: 2

Person [id=lisi, name=li si, status=0]

Person [id=zhangsan, name=zhang san, status=0]

时间: 2024-12-25 20:53:29

MyBatis应用开发(3)应用之开发方式注解方式篇的相关文章

MyBatis应用开发(4)应用之开发方式API方式篇

1.1. API方式 1.1.1. 开发步骤 目标:使用MyBatis从数据库中查询t_person表的全部记录. MyBatis还可以使用直接使用API来配置数据库中的记录与Java对象之间的映射关系以及其它各种必需的配置.此时不再需要使用任何XML配置文件.由于使用了API建立映射关系,Mapper接口也不需要加任何的注解. 使用MyBatis 的API方式开发数据库应用的步骤如下所示: (1)编写POJO类Person. (2)编写Mapper接口PersonMapper. (3)编写业务

MyBatis应用开发(2)应用之开发方式XML文件篇

1.1. 开发方法 有三种使用MyBatis的方法: (1)使用XML配置文件的方式. (2)使用注解方式. (3)使用API方式. 1.2. XML方式 1.2.1. 开发步骤 目标:使用MyBatis从数据库中查询t_person表的全部记录. MyBatis使用XML文件来配置数据库中的记录与Java对象之间的映射关系,实现了SQL语句和Java代码的分离. 使用MyBatis 的XML配置方式开发数据库应用的步骤如下所示: (1)编写POJO类Person. (2)编写Mapper接口P

从零开始学JAVA(09)-使用SpringMVC4 + Mybatis + MySql 例子(注解方式开发)

项目需要,继续学习springmvc,这里加入Mybatis对数据库的访问,并写下一个简单的例子便于以后学习,希望对看的人有帮助.上一篇被移出博客主页,这一篇努力排版整齐,更原创,希望不要再被移出主页了. 原创文章,后面附上源码,转载请注明出处http://www.cnblogs.com/lin557/p/6179618.html 一.运行环境 Eclipse Neon.1a Release (4.6.1) 官网下载 mysql-5.7.16-winx64(http://cdn.mysql.co

atitit.提升开发效率---MDA 软件开发方式的革命(3)----自动化建表

atitit.提升开发效率---MDA 软件开发方式的革命(3)----自动化建表 1. 建模在后自动建表 1 1. 传统上,需要首先建表,在业务编码.. 1 2. 模型驱动建表---更多简化法是在建模在后自动建表 1 2. 自动建表的原理: 1 3. 自动建表工具::hibernate.hbm2ddl 跟Hibernate4.1 2 4. hbm2ddl最佳实践 2 3. hibernate.hbm2ddl.auto 2 5. Java语句执行 3 6. 使用Ant 执行hbm2ddl 3 7

springboot整合mybatis(映射文件方式和注解方式)

springboot作为一个微服务框架,给我们开发人员提供极大的便利,秉着约定大于配置的原则,通过starter包的形式为我们做了许多默认的配置,在进行数据持久化到关系型数据库时,我们一般都会首选spring data jpa,springboot为我们提供了starter包,只需配置很少的参数,就能满足我们的需求,非常方便.但是当我们遇到一些比较复杂的查询.多表关联查询及动态sql时,mybatis则在这方面更出色,并且在使用mybatis时我们可以通过sql优化来提高查询效率,springb

MyBatis应用开发(5)应用之几个重要概念

1.1. 重要概念 1.1.1. SqlSessionFactory接口 SqlSessionFactory是MyBatis的一个接口,定义了创建SqlSession的openSession()方法的多种重载形式.实际对象由SqlSessionFactoryBuilder这个类通过创建者设计模式(builder Pattern)来创建.SqlSessionFactoryBuilder类主要提供了不同途径创建实现了SqlSessionFactory接口的对象的build()方法的多种重载形式.Sq

atitit.提升开发效率---MDA 软件开发方式的革命(4)----编辑表单建模

atitit.提升开发效率---MDA 软件开发方式的革命(4)----编辑表单建模 1. 建模语言的选型anno+html...不是uml 1 2. 指定显示模板 @BeanEditForm(tmplt="c:/edit.html") 1 3. 配置属性的@Property(lable="xxx")显示 2 4. 配置属性的显示控件方式@DataType(value=DataTypeConstants.select,datasource="c:/cate

atitit.提升开发效率---MDA 软件开发方式的革命(5)----列表查询建模

atitit.提升开发效率---MDA 软件开发方式的革命(5)----列表查询建模 1. 配置条件字段@Conditional 1 2. 配置条件字段显示类型为[email protected](displayType = displayType.rang, rangStart = rang.start, rangEnd = rang.end,op=op.range) 1 3. 自定义@Adapter (UI2whereExpress) 2 4. 条件字段排序@ConditionFieldCf

atitit.提升开发效率---mda 软件开发方式的革命--(2)

atitit.提升开发效率---mda 软件开发方式的革命--(2) 1. 一个完整的MDA规范包括: 1 2. 一个完整的MDA应用程序包括: 1 3. MDA可以带来的最大的三个优点是什么? 2 4. 三大MDA工具 2 5. 代码补充 3 6. Mda的问题 3 7. EMF与MDA 4 8. MDA跟代码自己主动生成的差别 4 9. openMDX-开源MDA平台 5 10. openMDX 的开发过程 5 11. MDA的两种实现 5 12. 參考 6 1.  一个完整的MDA规范包括