使用MyBatis框架有几个必要的东西
MyBatis配置文件,用于设置数据库链接信息MyBatis映射文件,用于映射数据库表和持久化类的关系为了方便,定义一个MyBatisUtil类,用于获得数据库的SqlSession(用于查询数据库)首先我们创建我们的数据库,数据库的名称为school,数据库中有一个表Student
DROP DATABASE IF EXISTS school; CREATE DATABASE IF NOT EXISTS school; USE school; CREATE TABLE student( id INT(5) PRIMARY KEY, NAME VARCHAR(10), sal DOUBLE(8,2) );db.properties
mysql.driver=com.mysql.jdbc.Driver mysql.url=jdbc:mysql://127.0.0.1:3306/school #数据库用户名 mysql.username=root #数据库密码 mysql.password=rootmybatis.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"/> <!-- 设置一个默认的连接环境信息 --> <environments default="mysql_developer"> <!-- 连接环境信息,取一个任意唯一的名字 --> <environment id="mysql_developer"> <!-- mybatis使用jdbc事务管理方式 --> <transactionManager type="jdbc"/> <!-- mybatis使用连接池方式来获取连接 --> <dataSource type="pooled"> <!-- 配置与数据库交互的4个必要属性 --> <property name="driver" value="${mysql.driver}"/> <property name="url" value="${mysql.url}"/> <property name="username" value="${mysql.username}"/> <property name="password" value="${mysql.password}"/> </dataSource> </environment> </environments> <!-- 加载映射文件--> <mappers> <mapper resource="com/StudentMapper.xml"/> </mappers> </configuration> 创建MyBatisUtil类 package utils; 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 java.io.IOException; import java.io.Reader; public class MyBatisUtil { private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<SqlSession>(); private static SqlSessionFactory sqlSessionFactory; static{ try { //加载mybatis.xml配置文件 Reader reader = Resources.getResourceAsReader("mybatis.xml"); sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e); } } private MyBatisUtil(){} public static SqlSession getSqlSession(){ SqlSession sqlSession = threadLocal.get(); if(sqlSession == null){ sqlSession = sqlSessionFactory.openSession(); threadLocal.set(sqlSession); } return sqlSession; } public static void closeSqlSession(){ SqlSession sqlSession = threadLocal.get(); if(sqlSession != null){ sqlSession.close(); threadLocal.remove(); } } } 创建测试类,向数据库插入一条数据 package com.test; import org.apache.ibatis.session.SqlSession; import org.junit.Test; import utils.MyBatisUtil; public class TestHelloWorld { @Test public void testMybatis() { SqlSession sqlSession = MyBatisUtil.getSqlSession(); try{ //执行mynamespace.add1的sql语句,正好我们的映射文件想对应 sqlSession.insert("mynamespace.add1"); }catch(Exception e){ e.printStackTrace(); sqlSession.rollback(); }finally{ sqlSession.commit(); } MyBatisUtil.closeSqlSession(); } } 运行结果