(1)MyBatis之Hello World

    xiaoxiao2021-03-25  142

    什么是MyBatis 1 MyBatis参考文档 Mybatis之hello world 1 创建数据库使用MySQL数据库2 创建项目测试第一个MyBatis程序3 mybatis工作流程4 代码下载地址 本博客代码的下载地址mybatis之helloworld

    1.什么是MyBatis?

    MyBatis是orm解决方案之一,是一个基于Java的持久层框架。MyBatis 本是apache的一个开源项目iBatis, 2010apache software foundation 迁移到了google code,并且改名为MyBatis。MyBatis是jdbc和Hibernate的一种折中选择,在MyBatis我们可以自己控制SQL语句,通过映射关系实现数据库表到持久化类的映射

    1.1 MyBatis参考文档

    MyBatis中文参考文档MyBatis离线文档(HTML版本)

    2. Mybatis之hello world

          使用MyBatis框架有几个必要的东西

    MyBatis配置文件,用于设置数据库链接信息MyBatis映射文件,用于映射数据库表和持久化类的关系为了方便,定义一个MyBatisUtil类,用于获得数据库的SqlSession(用于查询数据库)

    2.1 创建数据库(使用MySQL数据库)

          首先我们创建我们的数据库,数据库的名称为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) );

    2.2 创建项目,测试第一个MyBatis程序

    新建一个Maven程序(POM.XML) <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com</groupId> <artifactId>skd</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <name>skd</name> <url>http://maven.apache.org</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.1</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.9</version> <scope>test</scope> </dependency> </dependencies> </project> 创建Student类 public class Student { private Integer id; private String name; private Double sal; public Student(){} 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 Double getSal() { return sal; } public void setSal(Double sal) { this.sal = sal; } } 创建Student类和student表的映射关系 <?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="mynamespace" > <resultMap id="studentMap" type="com.Student" > <id column="id" property="id" jdbcType="INTEGER" /> <result column="name" property="name" jdbcType="VARCHAR" /> <result column="sal" property="sal" jdbcType="VARCHAR" /> </resultMap> <insert id="add1"> insert into students(id,name,sal) values(1,'哈哈',7000) </insert> </mapper> 创建mybatis的配置文件

    db.properties

    mysql.driver=com.mysql.jdbc.Driver mysql.url=jdbc:mysql://127.0.0.1:3306/school #数据库用户名 mysql.username=root #数据库密码 mysql.password=root

    mybatis.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(); } } 运行结果

    2.3 mybatis工作流程

    通过Reader对象读取src目录下的mybatis.xml配置文件(该文件的位置和名字可任意)通过SqlSessionFactoryBuilder对象创建SqlSessionFactory对象从当前线程中获取SqlSession对象事务开始,在mybatis中默认(也就是不需要自己开启事务)通过SqlSession对象读取StudentMapper.xml映射文件中的操作编号,从而读取sql语句事务提交,必写关闭SqlSession对象,并且分开当前线程与SqlSession对象,让GC尽早回收

    2.4 代码下载地址

    本博客代码的下载地址:mybatis之helloworld

    转载请注明原文地址: https://ju.6miu.com/read-11412.html

    最新回复(0)