使用iBATIS3.0注解完成对数据库的简单操作
iBATIS3.0也增加了一些简单的注解,iBATIS3的注解只能完成一些简单操作,要进行更复杂的操作,最好是在XML文件中配置。
在数据库(本人使用的mysql)中建立一个person表:
DROP TABLE IF EXISTS `test`.`person`;
CREATE TABLE `test`.`person` (
`id` int(10) unsigned NOT NULL auto_increment,
`name` varchar(20) default NULL,
`sex` varchar(8) default NULL,
`birthday` datetime default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
在MyEclipse新建一个Java Project,结构如下图
在jdbc.properties文件是映射文件要使用的,其内容如下:
driver=com.mysql.jdbc.Driver
url=jdbc\:mysql\://localhost\:3306/test
username=root
password=123456
SqlMapper.xml是iBATIS的配置文件,其代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-config.dtd">
<configuration>
<properties resource="jdbc.properties"/>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="cn/ibatis3/test/annotation/person.xml"/>
</mappers>
</configuration>
上面文件中的sql映射文件person.xml代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="cn.ibatis3.test.annotation.PersonMapper">
</mapper>
注意:在iBATIS3中,命名空间(namespace)是必须的,如果不使用注解的话,名字可以自己定义。一旦使用了注解,这里必须是那个使用注解类或接口的全名。
Person.java的代码请参考我的《iBATIS3学习(一)》。
sessionFactory.java和我前面的《iBATIS3学习(一)》一样,只是注意将:
private String resource="cn/ibatis3/test/SqlMapper.xml";
改为private String resource="cn/ibatis3/test/annotation/SqlMapper.xml";
iBATIS3的注解可以定义在接口方法上的,也可以定义在类方法上,我这里定义在接口上,接口PersonMapper.java代码如下:
package cn.ibatis3.test.annotation;
import java.util.List;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.SelectProvider;
import org.apache.ibatis.annotations.Update;
@CacheNamespace(readWrite = true)
public interface PersonMapper {
@Select("select * from person where id = #{id}")
@Options(useCache = true, flushCache = false)
Person selectById(Integer id);
@SelectProvider(type=SqlProvider.class ,method="selectAllSql")
List<Person> selectAll();
@Select("select * from person where name like #{name}")
List<Person> selectPersonsByName(String name);
@Insert( { "insert into person(name,birthday,sex)",
"values(#{name},#{birthday},#{sex})" })
void insert(Person person);
@Delete("delete from person where id=#{id}")
void delete(Person person);
@Update( {"update person set name=#{name},birthday=#{birthday},sex=#{sex}",
"where id=#{id}" })
void update(Person person);
}
上面的注解SelectProvider使用了一个类SqlProvider.java,其代码如下:
package cn.ibatis3.test.annotation;
public class SqlProvider {
// 动态的SQL语句,实际上应该使用iBATIS的动态SQL产生方法,这里仅仅是为了使用注解
public String selectAllSql() {
return "SELECT * FROM person p";
}
}
接口的实现类PersonDao.java代码如下:
package cn.ibatis3.test.annotation;
import java.util.ArrayList;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
public class PersonDao implements PersonMapper {
private SqlSessionFactory sessionFactory = SessionFactory.getInstance()
.getSqlSessionFactory();
public Person selectById(Integer id) {
Person person = new Person();
SqlSession session = null;
try {
session = sessionFactory.openSession();
PersonMapper personMapper = session.getMapper(PersonMapper.class);
person = personMapper.selectById(id);
} finally {
session.close();
}
return person;
}
@SuppressWarnings("unchecked")
public List<Person> selectAll() {
List<Person> persons = new ArrayList<Person>();
SqlSession session = null;
try {
session = sessionFactory.openSession();
PersonMapper personMapper = session.getMapper(PersonMapper.class);
persons = personMapper.selectAll();
} finally {
session.close();
}
return persons;
}
public void delete(Person person) {
SqlSession session = null;
try {
session = sessionFactory.openSession();
PersonMapper personMapper = session.getMapper(PersonMapper.class);
personMapper.delete(person);
session.commit();
} finally {
session.close();
}
}
public void insert(Person person) {
SqlSession session = null;
try {
session = sessionFactory.openSession();
PersonMapper personMapper = session.getMapper(PersonMapper.class);
personMapper.insert(person);
session.commit();
} finally {
session.close();
}
}
public void update(Person person) {
SqlSession session = null;
try {
session = sessionFactory.openSession();
PersonMapper personMapper = session.getMapper(PersonMapper.class);
personMapper.update(person);
session.commit();
} finally {
session.close();
}
}
@SuppressWarnings("unchecked")
public List<Person> selectPersonsByName(String name) {
List<Person> persons = new ArrayList<Person>();
SqlSession session = null;
try {
session = sessionFactory.openSession();
PersonMapper personMapper = session.getMapper(PersonMapper.class);
persons=personMapper.selectPersonsByName("%" + name + "%");
} finally {
session.close();
}
return persons;
}
}
好了,有时间还会继续写相关文章的,谢谢!欢迎大家指出其中的错误或者是不恰当的地方。
- 大小: 8 KB
分享到:
相关推荐
6. **注解支持**:除了XML配置,3.0版本还增加了对注解的支持,开发者可以在DAO接口和实体类上直接使用注解来声明SQL和参数映射,简化了配置。 7. **TypeHandler**:Ibatis的TypeHandler机制用于处理Java类型与...
总的来说,"ibatis3.0+jsp(demo)"项目是一个学习和实践Java Web数据库操作的好资源,涵盖了iBATIS的配置、映射、SQL执行,以及JSP的视图展示,对于理解Java Web开发和数据库操作具有很高的参考价值。通过深入研究这...
Ibatis3.0中文文档和英文文档是学习和理解这个框架的重要资源,它们详尽地阐述了每个知识点,并提供了丰富的示例代码。无论是初学者还是资深开发者,都可以从中受益匪浅,提升数据库操作的效率和质量。
在Spring 3.0中,可以使用MyBatis-Spring集成库来无缝地将iBatis与Spring结合,使得事务管理和DAO对象的创建变得简单。 **注解** 在本项目中,注解将被用来声明和配置DAO和服务类。例如,`@Repository`用于标记DAO...
它可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 #### 三、`IN`语句的基本用法 在标准的SQL查询中,`IN`语句通常用于匹配一个...
总结,`ibatis-core-3.0.jar`作为iBatis的核心库,封装了与数据库交互的复杂逻辑,使开发者能够专注于业务逻辑,而非底层的数据库操作。理解并熟练运用这个库,将极大地提升开发效率和代码质量。在实际项目中,结合...
iBatis是一个轻量级的持久层框架,它将SQL与Java代码分离,通过XML或注解方式配置和映射SQL语句,使数据库操作更易于维护和扩展。iBatis与Spring的结合,可以实现数据访问层的事务管理,提高了代码的可测试性和可...
在本文中,我们将深入探讨如何使用Spring 3.0、iBATIS和Oracle数据库进行全注解开发。这种技术栈组合常用于构建企业级Java Web应用程序,以实现灵活的数据访问和松散耦合的架构。 首先,让我们了解Spring 3.0中的...
在Java开发领域,MyBatis是一个非常流行的持久层框架,它简化了数据库操作与Java对象之间的映射工作。`ibatis-core-3.0.jar`是MyBatis的核心库文件,包含了MyBatis框架的主要功能。`org.apache.ibatis.annotations....
iBatis 的设计目标是使数据库操作变得简单,并且能够将SQL语句直接写在配置文件中,便于维护和调整。 集成Spring 3.0和iBatis的过程通常包括以下步骤: 1. **配置数据源**:在Spring的配置文件中,你需要定义数据...
4. ibatis-dao-2:可能是指iBATIS Data Access Object (DAO)的第二个版本,DAO是一种设计模式,用于封装数据库操作,使得业务逻辑与数据访问层解耦。 5. ibatis-sqlmap-2:iBATIS SQLMap是它的SQL映射组件,负责将...
3. **简单易用的API**:Ibatis 提供了一个简单但功能丰富的API,用于执行数据库操作,如插入、更新、删除和查询。这些操作可以通过SqlSession对象进行,大大降低了学习成本。 4. **事务管理**:Ibatis 提供了对事务...
iBATIS的核心在于它的SQL Maps,这是一种XML或者注解形式的配置文件,用于定义数据库操作与Java对象之间的映射关系。开发者可以直接编写SQL语句,这相比Hibernate的HQL(Hibernate Query Language)或Criteria API...
Ibatis作为一个轻量级的ORM(Object-Relational Mapping)框架,它的设计目标是简化Java应用与数据库的交互,通过XML或注解的方式将SQL与Java代码分离,提供动态SQL的支持,使得开发人员可以在不修改大量代码的情况...
`@Transactional` 注解可以方便地声明事务边界,而`@Repository` 注解配合Spring的数据访问异常转换机制,使得数据库操作的错误处理更加优雅。 Spring 3.0 还强化了消息支持,增加了对JMS(Java Message Service)...
Ibatis,全称为MyBatis,是一个优秀的Java持久层框架,它主要负责简化数据库操作,使得开发者能够将注意力集中在编写SQL语句上,而无需关注底层的JDBC代码。Ibatis 2.3.3.720.jar是该框架的一个特定版本,包含了...
Ibatis 是一个优秀的轻量级Java持久层框架,它提供了SQL映射功能,将复杂的数据库操作与业务逻辑相分离,从而降低了系统的耦合度。这个压缩包“ibatis-core-3.0”很可能是Ibatis的3.0版本的核心库,包含了实现Ibatis...
在Spring 3.0中整合iBatis 3 Beta10是一个相对复杂的过程,因为官方文档并未明确提及对iBatis 3的支持。不过,通过一些自定义配置和理解两个框架的基本原理,开发者可以实现这样的整合。下面我们将详细介绍如何进行...
在IT行业中,iBATIS(现为MyBatis)是一个非常流行的数据访问框架,它将SQL语句与Java代码分离,使得数据库操作更加简洁、灵活。本篇文章将深入探讨如何使用XML配置文件来配置iBATIS,以解决你在实际开发中可能遇到...