MyBatis入门程序(基于XML配置)

创建一个简单的MyBatis入门程序,实现对学生信息的增删改查功能(基于XML配置)

一、新建一个Java工程,导入MyBatis核心jar包、日志相关的jar包以及连接Oracle数据库所需驱动包,目录结构如下

二、创建MyBatis核心配置文件mybatis-config.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>
	<!-- 引入资源文件 -->
	<properties resource="db.properties"></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="com/heaven/dao/StudentMapper.xml"/>
	</mappers>
</configuration>

三、创建POJO类Student.java

package com.heaven.bean;

import java.util.Date;

public class Student {
	private Integer studId;
	private String name;
	private String email;
	private Date dob;

	public Student() {
	}

	public Student(Integer studId, String name, String email, Date dob) {
		this.studId = studId;
		this.name = name;
		this.email = email;
		this.dob = dob;
	}

	public Integer getStudId() {
		return studId;
	}
	public void setStudId(Integer studId) {
		this.studId = studId;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public Date getDob() {
		return dob;
	}
	public void setDob(Date dob) {
		this.dob = dob;
	}
	@Override
	public String toString() {
		return "Student [studId=" + studId + ", name=" + name + ", email=" + email + ", dob=" + dob + "]";
	}

}

四、创建StudentMapper.xml映射文件

<?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.heaven.dao.StudentMapper">
	<!-- 保存学生信息 -->
	<insert id="saveStudent" parameterType="com.heaven.bean.Student">
		insert into students(stud_id,name,email,dob) values(#{studId},#{name},#{email},#{dob})
	</insert>
	<!-- 根据Id查询学生信息 -->
	<select id="selectById" parameterType="Integer" resultType="com.heaven.bean.Student">
		select stud_id studId,name,email,dob from students where stud_id = #{id}
	</select>
	<!-- 查询所有学生信息 -->
	<select id="findAll" resultType="com.heaven.bean.Student">
		select stud_id studId,name,email,dob from students
	</select>
	<!-- 更新学生信息 -->
	<update id="updateStudent" parameterType="com.heaven.bean.Student">
		update students set email = #{email} where stud_id = #{studId}
	</update>
	<!-- 根据Id删除学生信息 -->
	<delete id="deleteById" parameterType="Integer">
		delete from students where stud_id = #{id}
	</delete>
</mapper>

五、创建映射接口StudentMapper.java

package com.heaven.dao;

import java.util.List;

import com.heaven.bean.Student;

public interface StudentMapper {
    /**
     * 保存学生信息
     * @param stu 入参 :Student对象
     */
    void saveStudent(Student stu);
    /**
     * 根据id查询学生信息
     * @param id 入参:id
     * @return 返回值:Student对象
     */
    Student selectById(Integer id);
    /**
     * 查询所有学生信息
     */
    List<Student> findAll();
    /**
     * 删除学生信息
     * @param id 入参:id
     */
    void deleteById(Integer id);
    /**
     * 更新学生信息:入参:Student对象
     * @param stu
     */
    void updateStudent(Student stu);
}

六、编写JUnit测试类Test.java

package com.heaven.test;

import java.io.IOException;
import java.util.Date;
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.Before;
import org.junit.Test;

import com.heaven.bean.Student;
import com.heaven.dao.StudentMapper;

public class TestMapper {
    private SqlSessionFactory factory;
    private SqlSession sqlSession;
    private StudentMapper mapper;
    /**
     * 执行测试方法之前执行,用于创建SqlSessionFactory并获取SqlSession对象
     */
    @Before
    public void init() {
        try {
            //创建SqlSessionFactory,加载mybatis核心配置文件
            factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
            //获取SqlSession接口对象
            sqlSession = factory.openSession();
            //使用动态代理方式创建mapper接口的代理对象
            mapper = sqlSession.getMapper(StudentMapper.class);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Test
    public void saveStudent() {
        Student stu = new Student(1001,"TOM","123456",new Date());
        mapper.saveStudent(stu);
        sqlSession.commit();
        sqlSession.close();
    }

    @Test
    public void selectById(){
        Student student = mapper.selectById(1001);
        System.out.println(student);
    }
    @Test
    public void findAll(){
        List<Student> list = mapper.findAll();
        System.out.println(list.toString());
    }

    @Test
    public void updateStudent(){
        Student stu = new Student(1001, "Tom", "[email protected]", new Date());
        mapper.updateStudent(stu);
        sqlSession.commit();
    }

    @Test
    public void deleteById(){
        mapper.deleteById(1001);
        sqlSession.commit();
    }
}

七、其他相关文件

数据库连接配置db.properties

driver=oracle.jdbc.driver.OracleDriver
url=jdbc:oracle:thin:@127.0.0.1:1521:XE
username=heaven
password=heaven

log4j配置文件log4j.properties

#设置日志输出级别,输出方式log4j.rootLogger=DEBUG, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%-5p] %c - %m%n
#show sql
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG 

原文地址:https://www.cnblogs.com/heavenplus/p/9782897.html

时间: 2024-10-16 10:37:54

MyBatis入门程序(基于XML配置)的相关文章

基于xml配置的springMVC-快速入门

一:准备工作 将需要用到的spring包放进lib文件夹内,具体需要什么包自己网上查,或在我的例子里找. 二:配置文件:web.xml 主要是配置servlet路径方式和指定上下文xml文件. 1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="

3.MyBatis 入门程序

1     Mybatis入门程序 1.1 需求 具体需求: 1.  根据用户ID来查询用户信息: 2.  根据用户名称来模糊查询用户信息列表: 3.  添加用户: 4.  删除用户: 5.  修改用户. 1.2 下载MyBatis mybaits的代码由github.com管理,地址:https://github.com/mybatis/mybatis-3/releases Lib:mybatis的依赖包 Mybatis-3.2.7.jar:mybatis的核心包 Mybatis-3.2.7.

Spring3.2 中 Bean 定义之基于 XML 配置方式的源码解析

Spring3.2 中 Bean 定义之基于 XML 配置方式的源码解析 本文简要介绍了基于 Spring 的 web project 的启动流程,详细分析了 Spring 框架将开发人员基于 XML 定义的 Bean 信息转换为 Spring 框架的 Bean Definition 对象的处理过程,向读者展示了 Spring 框架的奥妙之处,可以加深开发人员对 Spring 框架的理解. 0 评论: 秦 天杰, 软件工程师, IBM China 2013 年 9 月 02 日 内容 在 IBM

Struts2 之 Validation 拦截器 基于XML配置方式实现(验证框架)

基于XML配置方式实现输入校验 I:定义Action *  要继承ActionSupport或者实现Validateable接口: II:配置struts_validate.xml文件 *  验证出错转向的页面                struts.xml配置<result name=“input”>/validate/loginxml.jsp</result>                  其中input转向是在action中已经定义好的. III:配置验证的xml文件

[刘阳Java]_Spring AOP基于XML配置介绍_第9讲

基于注解配置的Spring AOP固然简单,但是这节我们会给大家介绍基于XML配置的AOP是如何应用的.为什么这么说了,因为后面我们还会介绍到Spring对Dao操作的事务管理(基于AOP的XML文件方式来配置事务) 1. 基于XML文件方式来配置Spring的AOP,则我们需要的一些基本元素如下 <aop:config.../>,此标签很重要.它是在XML里配置AOP功能的核心标签 all aspect and advisor elements must be placed within a

mybatis使用注解替代xml配置,动态生成Sql

mybatis使用注解替代xml配置时,遇到判断条件是否为null或者为空时,@Select很难搞定,不知道怎么办? mybatis3中增加了使用注解来配置Mapper的新特性,使用 SelectProvider来动态生成sql. 典型的使用场景 1. 无参数@SelectProvide方法在Mapper接口方法上和@SelectProvide指定类方法上,均无参数:UserMapper.java: 1     @SelectProvider(type = SqlProvider.class, 

转载 - Struts2基于XML配置方式实现对action的所有方法进行输入校验

出处:http://www.cnblogs.com/Laupaul/archive/2012/03/15/2398360.html 使用基于XML配置方式实现输入校验时,Action也需要继承ActionSupport,并且提供校验文件,校验文件和action类放在同一个包下,文件的取名格式为:ActionClassName-validation.xml.ActionClassName为action的简单类名,-validation为固定写法.如果Action类为cn.validate.acti

AOP实现日志打印 基于xml配置的AOP实现 切入点表达式

前置通知,后置通知,异常通知,返回通知 使用注解需要加入 在xml中加入  <aop:aspectj-autoproxy></aop:aspectj-autoproxy> 环绕通知(跟以上结果一样)  需要有返回值return rs: 基于xml配置的AOP实现(上面的注解全去掉,配置以下) ①切入点表达式的语法格式[参见第5章AOP细节] execution([权限修饰符] [返回值类型] [简单类名/全类名] [方法名]([参数列表])) 参见第5章AOP细节:演示验证 1.任

基于XML配置的Spring MVC

1.添加jar 2.web.xml配置 <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation