`
Java_1010
  • 浏览: 8752 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Mybatis-05-原始dao开发方法

 
阅读更多

本节来介绍原始dao的开发方法,原始dao方式存在一些问题,比如:存在大量的模板代码(session.close()、session.commit()。。。)、在调用SqlSession的方法时参数statement的ID存在硬编码,且传入的参数变量值由于泛型的原因有可能会出现类型传递错误(但是编译器并不报错,只在运行时会出错)。

原始dao方法虽然不建议使用,但是在实际开发项目中有时候也会用到,在此简单录一下。

1、数据库表结构:

 一个单表(user),很简单,不多说。

 

2、模型类:

package com.wp.model;

import java.util.Date;

public class User {
	
	private int id;
	private String userName;
	private int sex;
	private int age;
	private Date birthDay;
	private String address;
	
	// get   set
	
	public User() {
		super();
	}
	
	public User(int id, String userName, int sex, int age, Date birthDay,
			String address) {
		super();
		this.id = id;
		this.userName = userName;
		this.sex = sex;
		this.age = age;
		this.birthDay = birthDay;
		this.address = address;
	}
	
	public User(String userName, int sex, int age, Date birthDay, String address) {
		super();
		this.userName = userName;
		this.sex = sex;
		this.age = age;
		this.birthDay = birthDay;
		this.address = address;
	}
	
	public String toString() {
		return "User [address=" + address + ", age=" + age + ", birthDay="
				+ birthDay + ", id=" + id + ", sex=" + sex + ", userName="
				+ userName + "]";
	}
	
}

 

3、mybatis全局配置文件:

<?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>
	<!-- 加载数据库配置文件 -->
	<properties resource="db.properties"/>

	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC"/>
			<!-- 配置数据源信息 -->
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driver}"/>
				<property name="url" value="${jdbc.url}"/>
				<property name="username" value="${jdbc.username}"/>
				<property name="password" value="${jdbc.password}"/>
			</dataSource>
		</environment>
	</environments>
	
	<!-- 加载映射文件 -->
	<mappers>
		<mapper resource="mapper/User.xml"/>
	</mappers>
</configuration>

 

4、映射文件:

<?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="UserSpace">
	
	<!-- 根据用户ID查询用户 -->
	<select id="selectById" parameterType="java.lang.Integer" resultType="com.wp.model.User">
		select * from user where id=#{id}
	</select>
	
	<!-- 根据用户名称模糊查询用户 -->
	<select id="selectByVagueName" parameterType="java.lang.String" resultType="com.wp.model.User">
		select * from user where username like #{username}
	</select>
	
	<!-- 添加用户 -->
	<insert id="addUser" parameterType="com.wp.model.User">
		insert into user(username, sex, age, birthday, address)
		values(#{userName}, #{sex}, #{age}, #{birthDay}, #{address})
	</insert>
	
	<!-- 更新用户 -->
	<update id="updateUser" parameterType="com.wp.model.User">
		update user set username=#{userName}, sex=#{sex}, age=#{age}, 
		birthday=#{birthDay}, address=#{address}
		where id=#{id}
	</update>
	
	<!-- 删除用户 -->
	<delete id="deleteById" parameterType="java.lang.Integer">
		delete from user where id=#{id}
	</delete>
	
</mapper>

 

5、dao接口:

package com.wp.dao;

import java.util.List;

import com.wp.model.User;

public interface UserDao {
	
	public User getById(int id);
	
	public List<User> getByName(String userName);
	
	public void add(User user);
	
	public void update(User user);
	
	public void delete(int id);
	
}

 

6、接口实现类:

     由于SqlSessionFactory是线程安全的,因此在实现类中共用一个SqlSessionFactory即可。但是SqlSession绝对不能共用。

package com.wp.dao.impl;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import com.wp.dao.UserDao;
import com.wp.model.User;

public class UserDaoImpl implements UserDao {

	private SqlSessionFactory sessionFactory; 
	
	public UserDaoImpl(SqlSessionFactory sessionFactory) {
		this.sessionFactory = sessionFactory;
	}

	@Override
	public void add(User user) {
		SqlSession session = this.sessionFactory.openSession();
		session.insert("UserSpace.addUser", user);
		session.commit();
		session.close();
	}

	@Override
	public void delete(int id) {
		SqlSession session = this.sessionFactory.openSession();
		session.delete("UserSpace.deleteById", id);
		session.commit();
		session.close();
	}

	@Override
	public User getById(int id) {
		SqlSession session = this.sessionFactory.openSession();
		User user = session.selectOne("UserSpace.selectById", id);
		session.close();
		return user;
	}

	@Override
	public List<User> getByName(String userName) {
		SqlSession session = this.sessionFactory.openSession();
		List<User> userList = session.selectList("UserSpace.selectByVagueName", userName);
		session.close();
		return userList;
	}

	@Override
	public void update(User user) {
		SqlSession session = this.sessionFactory.openSession();
		session.update("UserSpace.updateUser", user);
		session.commit();
		session.close();
	}

}

 

7、测试程序:

    在测试类开始获取全局的SqlSessionFactory,并传递给接口实现类。

package com.wp.dao.impl;

import java.io.InputStream;
import java.util.Date;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;

import com.wp.dao.UserDao;
import com.wp.model.User;
import com.wp.util.DateUtil;

public class UserDaoImplTest {

	private SqlSessionFactory sessionFactory;
	
	@Before
	public void setUp() throws Exception {
		String resource = "mybatis-config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		this.sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
	}

	@Test
	public void testAdd() {
		Date date = DateUtil.parseStrToFullDate("2001-11-20", "yyyy-MM-dd");
		User user = new User("敏敏特穆尔", 0, 17, date, "你在哪,我就在哪!");
		UserDao userDao = new UserDaoImpl(this.sessionFactory);
		userDao.add(user);
		System.out.println("添加完成。。。");
	}

	@Test
	public void testDelete() {
		UserDao userDao = new UserDaoImpl(this.sessionFactory);
		userDao.delete(3);
		System.out.println("删除完成。。。");
	}

	@Test
	public void testGetById() {
		UserDao userDao = new UserDaoImpl(this.sessionFactory);
		User user = userDao.getById(11);
		System.out.println("根据主键查询:" + user);
	}

	@Test
	public void testGetByName() {
		UserDao userDao = new UserDaoImpl(this.sessionFactory);
		List<User> userList = userDao.getByName("%谢%");
		System.out.println("名称查询:" + userList);
	}

	@Test
	public void testUpdate() {
		UserDao userDao = new UserDaoImpl(this.sessionFactory);
		Date date = DateUtil.parseStrToFullDate("1073-11-20", "yyyy-MM-dd");
		User user = new User(12, "白眉鹰王", 1, 99, date, "鹰爪功!");
		userDao.update(user);
		System.out.println("更新完成。。。");
	}

}

 

 

  • 大小: 49.6 KB
分享到:
评论

相关推荐

    mybatis-spring-1.3.3.jar官方下载

    这样,我们可以在 Spring 环境中通过 DAO 接口直接调用 SQL 方法,而无需关心实现细节。 5. **Transaction Management**:MyBatis-Spring 提供了与 Spring 事务管理的无缝集成,可以使用 Spring 的声明式事务管理来...

    mybatis-3.1.1.jar mybatis-3.2.2.jar mybatis-3.2.7.jar

    MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 标题中的"mybatis-3.1.1.jar"、"mybatis-3.2.2.jar"和"mybatis-3.2.7....

    mybatis-pagination-master

    Mybatis-Pagination-Master 是一个基于 MyBatis 的分页插件项目,旨在简化在实际开发过程中对数据进行分页处理的复杂性。这个项目是在原版 mybatis-pagination 的基础上进行了改进并添加了详细的注释,使得开发者更...

    mybatis-3.4.6.jar

    MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 标题中的"mybatis-3.4.6.jar"是MyBatis框架的特定版本,即3.4.6版的Java...

    mybatis-generator-gui.zip

    MyBatis Generator (MBG) 是一个强大的工具,它允许开发者自动生成MyBatis相关的代码,包括实体类、Mapper接口及XML配置文件、DAO层代码等。`mybatis-generator-gui.zip` 提供了一个图形用户界面(GUI)版本的MBG,...

    mybatis-3.5.7.zip

    MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 在"Mybatis-3.5.7.zip"这个压缩包中,我们可以预见到以下几个核心组成...

    mybatis-3.0.2.jar下载

    除了核心库,`license.txt`文件包含的是MyBatis的许可协议,这通常是Apache License 2.0,允许免费使用、修改和分发代码,但需要保留原始版权信息。 对于初学者,了解MyBatis的基本概念和配置是至关重要的。开始...

    mybatis-generator-core-1.3.2.zip

    MyBatis Generator(MBG)是一个强大的工具,用于自动生成MyBatis的SQL映射文件、Java模型类和DAO接口。在本压缩包"mybatis-generator-core-1.3.2.zip"中,包含了MBG的1.3.2版本,以及支持MySQL数据库连接的jar包和...

    MyBatis3.2.1.jar+MyBatis-Spring1.1.1.jar

    4. **简化DAO开发**:使用MyBatis-Spring,你可以直接将Mapper接口声明为Spring的bean,这样就可以在服务层直接注入并调用,降低了DAO层的开发复杂性。 5. **灵活的SQL编写**:MyBatis允许在XML映射文件或者Mapper...

    mybatis-generator-gui_代码生成器_mybatis_

    MyBatis 可以使用简单的 XML 或注解进行配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。 2. **代码生成**:MBG 能够根据数据库表自动生成 Model 类...

    springmybatis(含有mybatis-generator示例)

    在本项目"springmybatis(含有mybatis-generator示例)"中,主要展示了如何将Spring、Spring Web MVC和MyBatis框架进行集成,并且利用MyBatis Generator自动化工具生成数据库操作的代码,使得开发过程更为高效。...

    mybatis3--2.mybatis开发dao

    总结来说,MyBatis 的 DAO 开发主要包括创建 Mapper 接口、Mapper XML 文件(或使用注解),定义 SQL 语句和结果映射,然后通过 MyBatis 的 SqlSessionFactory 和 SqlSession 来执行 SQL。在实际开发中,我们还可以...

    MyBatis-Spring 整合

    ### 原始DAO实现类的方式 在MyBatis-Spring整合中,原始的DAO实现类方式是指直接创建一个继承自`SqlSessionTemplate`或`SqlSessionFactoryBean`的DAO接口的实现类。这种方式下,开发人员需要手动管理SqlSession,...

    springboot-mybatis-demo

    MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 **3. 整合步骤** - **创建SpringBoot项目**:首先,我们需要使用Spring...

    mybatis-3.2.4

    XML配置文件中,我们可以定义`&lt;mapper&gt;`、`&lt;select&gt;`、`&lt;insert&gt;`、`&lt;update&gt;`和`&lt;delete&gt;`等元素,而注解则可以直接在DAO接口的方法上使用。 2. **动态SQL**:MyBatis的动态SQL功能强大,可以灵活地根据条件构造...

    mybatis_spring(原始dao开发方法的整合)

    本篇文章将深入探讨如何将这两个框架整合,实现原生DAO(Data Access Object)开发方法的整合,以提高开发效率和代码可维护性。 MyBatis是一个优秀的持久层框架,它允许开发者通过SQL语句直接操作数据库,提供了...

    mybatis-oracle逆向工程工具

    这款工具的核心功能是自动生成与数据库表结构对应的MyBatis映射文件、实体类以及DAO接口,极大地提高了开发效率,减少了手动编写这些基础代码的工作量。 在使用这个工具之前,你需要了解以下几个关键知识点: 1. *...

    mybatis-generator1.3.2

    MyBatis Generator (MBG) 是一个强大的工具,用于自动生成 MyBatis 框架相关的 SQL 映射文件、Java 模型类和 DAO 类。版本 1.3.2 是 MBG 的一个稳定版本,它包含了对 MyBatis 3.2.7 的支持。这个压缩包提供了一个...

    mybatis-generator-1.3.2-eclipse插件带数据库中文注释

    MyBatis Generator(MBG)是一个强大的工具,用于在Java项目中自动生成MyBatis的SQL映射文件、DAO接口和实现类,以及实体类。它极大地提高了开发效率,减少了手动编写这些重复代码的工作量。在给定的资源中,我们有...

    mybatis-generator

    2. **Mybatis-Generator的作用**:在Mybatis中,开发者需要手动编写大量的DAO层代码,包括实体类、Mapper接口和对应的XML配置文件。Mybatis-Generator就是为了解决这个问题,它可以自动生成这些代码,只需要提供...

Global site tag (gtag.js) - Google Analytics