记录一下MyBatis的内容


MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
— MyBatis简介
在去MyBatis官网下载jar包时,会有一个说明书里面有框架的使用方式,包括一些必要的代码,所以CV大法(复制粘贴)在写框架代码时是非常必要的。
这里我用maven( 不需要手动下载jar包直接添加依赖就好)写了一些测试记录一下。
pom文件内容

<dependencies>
<!-- ojdbc8连接驱动 这个版本是错误率比较低的一个版本 推荐使用 -->
		<dependency>
			<groupId>com.oracle.ojdbc</groupId>
			<artifactId>ojdbc8</artifactId>
			<version>19.3.0.0</version>
		</dependency>
		<!-- MyBatis框架jar包 -->
		<dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.6</version>
        </dependency>
		
		<!-- 一个测试工具 -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>
		
		<!-- 日志 -->
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
		</dependency>
	</dependencies>

一、关键的xml文件

mybatis-config.xml(最好是这个名字) 配置文件中包含了对 MyBatis 系统的核心设置,包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器

<?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">
						<transactionManager type="JDBC"></transactionManager>
						<dataSource type="POOLED">
							<property name="driver" value="oracle.jdbc.driver.OracleDriver" /> 
							<property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:XE" /> 
							<property name="username" value="web" />
							<property name="password" value="web" />
						</dataSource>
					</environment>
				</environments>
				
				<!-- 数据库sql语句配置文件的地址 -->
				<mappers>
					<mapper resource="com/briup/day1/mapper/UserMapper.xml"/>
				</mappers>
			</configuration>

这个文件里还可以有很多标签功能,本次内容中没有用到,想了解的可以去官方文档中查看。

二、封装一个工厂类

每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例。

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class GetSqlSession {
	private static SqlSessionFactory sqlSessionFactory;
	
	public static SqlSessionFactory getSqlSessionFactory(){
		if(sqlSessionFactory == null){
			InputStream inputStream = null;
			try {
				//官方文档中提供的方法
				inputStream = Resources.getResourceAsStream("mybatis-config.xml"); 
				sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
			} catch (IOException e) {
				e.printStackTrace();
				throw new RuntimeException(e.getCause());
			}
		}
		return sqlSessionFactory;
	}
	
	public static SqlSession openSession() { 
		return openSession(false); 
	}
	public static SqlSession openSession(boolean autoCommit) { 
		return getSqlSessionFactory().openSession(autoCommit); 
	}
}

三、sql语句的映射文件

<?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">
			<!-- namespace为mapper文件对应的接口类 -->
			<mapper namespace="com.briup.day1.dao.UserDao">

				<!-- id对应java中的方法名 -->
				<!-- resultType对应java中的返回类型 -->
				<!-- parameterType对应java中的参数类型 -->
				<insert id="insertUser" parameterType="com.briup.day1.bean.User"> 
				<!-- selectKey为主键自增 -->
				<!-- keyProperty为实例类中的对应的属性 -->
				<!-- resultType为属性类型 -->
				<selectKey keyProperty="id" resultType="long" order="BEFORE">
					select my_seq.nextval from dual
				</selectKey>
					INSERT INTO
					T_USER(ID,NAME,AGE,GENDER) 
					VALUES(#{id},#{name},#{age},#{gender}) 
				</insert>
				<select id="selectUserById" parameterType="Long" resultType="com.briup.day1.bean.User">
					select id,name,age,gender 
					from t_user 
					where id=#{id}
				</select>
				<select id="selectAll" resultType="com.briup.day1.bean.User">
					select id,name,age,gender 
					from t_user 
				</select>
				<delete id="deleteUser" parameterType="long">
					delete from t_user
					where id=#{id}
				</delete>
				<update id="updateUser" parameterType="com.briup.day1.bean.User" >
					update t_user set name=#{name}
				    where id =#{id}
				</update>

			</mapper>

这个文件中存放了sql中基本的增删改查操作
注意: 所有的xml文件都要放在maven中的src/main/resources中

四、对应的接口类

import java.util.List;

import com.briup.day1.bean.User;

public interface UserDao {
	public void insertUser(User user) ;
	public List<User> selectAll() ;
	public User selectUserById(long id) ;
	public void deleteUser(long id) ;
	public void updateUser(User user) ;
	
}

五、测试

在src/test/java中测试

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import com.briup.day1.bean.User;
import com.briup.day1.dao.UserDao;
import com.briup.util.GetSqlSession;

public class MyBatisTest {
	@Test
	public void test1() {
		  try {
			SqlSession session = GetSqlSession.openSession();
			  UserDao u = session.getMapper(UserDao.class);
			  u.insertUser(new User("s",20,"男"));
			  session.commit();
			  session.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
	@Test
	public void test2() {
		try {
			SqlSession session = GetSqlSession.openSession();
			UserDao u = session.getMapper(UserDao.class);
			User user = u.selectUserById(1);
			System.out.println(user);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	@Test
	public void test3() {
		  try {
			SqlSession session = GetSqlSession.openSession();
			  UserDao u = session.getMapper(UserDao.class);
			  u.updateUser(new User(1,"sb",20,"男"));
			  session.commit();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}
	@Test
	public void test4() {
		try {
			SqlSession session = GetSqlSession.openSession();
			UserDao u = session.getMapper(UserDao.class);
			u.deleteUser(7);
			session.commit();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	@Test
	public void test5() {
		try {
			SqlSession session = GetSqlSession.openSession();
			UserDao u = session.getMapper(UserDao.class);
			List<User> user = u.selectAll();
			System.out.println(user);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

下一篇:记录一下MyBatis的内容(二)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值