初始MyBatis

本文介绍如何使用MyBatis框架进行数据库操作,包括环境搭建、配置文件解析、SQL映射文件编写、实体类创建及测试类编写等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MyBatis是一个灵活的DAO层解决方案,满足较高的性能要求,可以在很多场合使用,但一般以下场合不建议使用:

a.      需要支持多种数据库或数据库有移植要求

b.      完全动态SQL,例如:字段都要动态生成

c.      使用的不是关系型数据库

开发步骤:

新建JAVA项目或WEB项目,导入jar包(下载地址http://pan.baidu.com/s/1sl0Ky89)


创建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>
<!--可以设置多个运行环境,满足不同需要,例如 开发、测试、生产环境上有不同一配置 -->
	<environments default="development">
		<environment id="development">
<!--事务管理类型主要有jdbc和managed,前者依赖于数据源获得的连接,后者依赖于容器 -->
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<!-- 如果数据库设置为UTF-8,则URL参数连接需要添加?useUnicode=true&characterEncoding=UTF-8,如下 -->
				<property name="url" value="jdbc:mysql://localhost:3306/mybatis_?useUnicode=true&characterEncoding=UTF-8" />
				<property name="username" value="root" />
				<property name="password" value="root" />
			</dataSource>
		</environment>
	</environments>
</configuration>

创建数据库及表(代码如下)

DROP DATABASE IF EXISTS mybatis_;
CREATE DATABASE mybatis_ CHARACTER SET UTF8;
USE mybatis_;

CREATE TABLE person(
    id INT PRIMARY KEY AUTO_INCREMENT,
    `name` VARCHAR(50),
     age INT
);

SELECT * FROM person;

创建实体类:Person.java(代码如下:)

package cn.wxz.entity;

import java.io.Serializable;

public class Person implements Serializable {


	private static final long serialVersionUID = -2525513725816258556L;
	private Integer id;
	private String name;
	private int age;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	@Override
	public String toString() {
		return "Person [age=" + age + ", id=" + id + ", name=" + name + "]";
	}
	
	

}



创建SQL映射文件及修改主配置文件(PersonMapper.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="cn.it.entity.DeptMapper">
<!-- type指定的是对应的实体类 -->
<resultMap type="cn.wxz.entity.Person" id="personResultMap">
<!-- id用来配置表的主键与类的属性的映射关系 ,column指定的是表的字段名; property指定的是类的属性名-->
<id column="id" property="id"/>
<!-- result用来配置 普通字段与类的属性的映射关系 ,column指定的是表的字段名; property指定的是类的属性名-->
<result column="name" property="name"/>
<result column="age" property="age"/>
</resultMap>
<!-- 添加一第记录 ; 定义插入的sql语句,通过命名空间+id方式被定位 -->
<insert id="insertDept" parameterType="cn.wxz.entity.Person">
<!-- #{} 用来获取传过来的参数 -->
	insert into person(name,age) values(#{name},#{age})
</insert>
</mapper>

修改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>
<!--environments指定数据源环境,default指的是使用哪个数据源  -->
	<environments default="person">
	<!--environment定义数据源的信息  -->
		<environment id="person">
		<!-- type="JDBC"表示事务由jdbc连接管理,type="MANAGED"表示事务由容器来管理 -->
			<transactionManager type="JDBC" />
			<!-- type="POOLED"表示使用连接池, type="UNPOOLED"表示不使用连接池 -->
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://localhost:3306/mybatis_?useUnicode=true&characterEncoding=UTF-8" />
				<property name="username" value="root" />
				<property name="password" value="root" />
			</dataSource>
		</environment>

	</environments>
	<!-- 加入映射文件信息 -->
 	<mappers>
		<mapper resource="cn/wxz/entity/PersonMapper.xml" />
	</mappers> 
</configuration>

编写数据库接口及实现(PersonDaoImpl.java代码如下)

package cn.wxz.dao.impl;
import java.io.IOException;
import java.io.Reader;
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 cn.wxz.entity.Person;
public class PersonDaoImpl {
	/*
	 * 1.读取配置文件信息
	 * 2。构建session工厂
	 * 3。创建session
	 * 4.开启事务(可选)
	 * 5。处理数据
	 * 6。提交、回滚事务
	 * 7。关闭session 
	 * 
	 */
	public int save(Person person){
		int i =0;
		String path="myBatis-config.xml";
		SqlSession session = null;
		Reader reader = null;
		try {
			//获取配置文件的信息
			reader = Resources.getResourceAsReader(path);
			//构建sessionfactory
			SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
			//创建session
			session = sessionFactory.openSession();
			//启用事务,这里默认已启用
			//执行数据处理,第一个参数用“命名空间+sql id"来定位sql,第二个参数用来给sql传参数
			i = session.insert("cn.it.entity.DeptMapper.insertDept", person);
			//提交事务
			 session.commit();
			
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			session.rollback();
		}finally{
			if(reader!=null){
				try {
					reader.close();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			if(session!=null){
				session.close();
			}
			
		}
		return i;
	}

}


编写测试类及测试TestDeptDaoImpl.java代码如下:

package cn.wxz.test;

import static org.junit.Assert.*;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import cn.wxz.dao.impl.PersonDaoImpl;
import cn.wxz.entity.Person;
public class TestDeptDaoImpl {
	private static PersonDaoImpl personDaoImpl;

	@BeforeClass
	public static void setUpBeforeClass() throws Exception {
		personDaoImpl = new PersonDaoImpl();
	}

	@AfterClass
	public static void tearDownAfterClass() throws Exception {
		personDaoImpl = null;
	}

	@Test
	public void test() {
		Person person = new Person();
		person.setName("真棒");
		person.setAge(25);
		System.out.println("受影响 的行数:"+personDaoImpl.save(person));
	}

}

运行test方法添加成功


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值