Mybatis框架的使用

Mybatis框架的使用(eclipse)

一、mybatis框架使用的基本组成及使用过程
二、基于xml配置实现映射器Mapper测试
三、基于注解配置实现映射器Mapper测试

一、mybatis框架使用的基本组成及使用过程
1、MybatisConfig.xml:全局配置文件,承载全局配置信息(驱动driver,数据库访问路径url,数据库用户名user,数据库密码password,映射器的路径)
2、映射器Mapper:可以通过xml来配置,也可以通过注解来实现,在全局配置文件来配置使用哪一种形式。
映射器的作用:承载sql语句,提供接口来调用sql语句
映射器的特点:可以通过唯一的方式访问每一个sql语句
–在xml配置中通过namespace和id来确定调用哪一条sql
–注解中通过接口中的方法来确定调用哪一条sql(方法的唯一性)
3、映射类:字段跟数据库字段相同,该类对象与数据库中数据一一对应。

使用过程:
(1)在eclipse中新建maven工程,新建为jar工程即可
在这里插入图片描述
在这里插入图片描述
(2)在pom.xml导入相应jar依赖包

<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>djn.com</groupId>
  <artifactId>Maybatis1</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <dependencies>
 
     <!-- mysql的驱动依赖 -->
    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.32</version>
    </dependency>
    <!-- mybatis的jar包依赖 -->
    <dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.2.8</version>
	</dependency>
    
  </dependencies>
</project>

保存后会在maven依赖看到导入的jar依赖
在这里插入图片描述
(2)在resource目录上新建全局配置文件MybatisConfig.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="文件路径" -->
		<property name="driver" value="com.mysql.jdbc.Driver"/>
		<property name="url" value="jdbc:mysql://127.0.0.1:3306/gamemanager"/>
		<property name="username" value="root"/>
    	<property name="password" value="root"/>
	</properties>	
	
	
	<!-- 配置环境,可以配置多个环境  default表示默认的环境-->
	<environments default="test">
		<environment id="test">
         <!-- 事务管理器,JDBC类型的事务管理器 -->
         <transactionManager type="JDBC" />
         <!-- 数据源,池类型的数据源 -->
         <dataSource type="POOLED">
            <property name="driver" value="${driver}" />	<!-- ${dirver}相当于变量 在 properties 中读取值-->
            <property name="url" value="${url}" />
            <property name="username" value="${username}" />
            <property name="password" value="${password}" />
         </dataSource>
      </environment>
	</environments>
	
	<!-- 声明承载sql语句的映射文件 -->
	<mappers>
     <!--  mapper resource="Mapper.xml" /--> <!-- xml配置映射器的方式 -->
     <mapper class="Mybatis.UserMapper"></mapper> <!-- 注解配置映射器的方式 -->
   </mappers>

</configuration>

(4)建立映射类(与数据库的表名相对应)

package Mybatis;

public class User {
	private int user_id;
	private String username;
	private String passwords;
	private int age;
	private String sex;
	
	public int getUser_id() {
		return user_id;
	}
	public void setUser_id(int user_id) {
		this.user_id = user_id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPasswords() {
		return passwords;
	}
	public void setPasswords(String passwords) {
		this.passwords = passwords;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		String string = "user_id="+user_id+"  username="+username
				+"   passwords="+passwords+"   age="+age+"  sex="+sex;
		return string;
	}
	

}

(5)生成数据库表

CREATE DATABASE  IF NOT EXISTS `gamemanager` /*!40100 DEFAULT CHARACTER SET latin1 */;
USE `gamemanager`;
-- MySQL dump 10.13  Distrib 8.0.17, for Win64 (x86_64)
--
-- Host: localhost    Database: gamemanager
-- ------------------------------------------------------
-- Server version	5.6.45-log

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!50503 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `user`
--

DROP TABLE IF EXISTS `user`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `user` (
  `user_id` smallint(6) NOT NULL,
  `username` varchar(20) DEFAULT NULL,
  `passwords` varchar(20) DEFAULT NULL,
  `age` tinyint(4) DEFAULT NULL,
  `sex` char(2) DEFAULT NULL,
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `user`
--

LOCK TABLES `user` WRITE;
/*!40000 ALTER TABLE `user` DISABLE KEYS */;
INSERT INTO `user` VALUES (1,'user1','123',12,'nv'),(2,'user2','123',45,'nv'),(3,'user3','123',32,'nv');
/*!40000 ALTER TABLE `user` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2020-03-27 10:15:37

(6)建立映射Mapper.xml
–xml的方式:在resource中新建MyMapper.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:命名空间,随便写,一般保证命名空间唯一 -->
<mapper namespace="MyMapper">
   <!-- statement,内容:sql语句。id:唯一标识,随便写,在同一个命名空间下保持唯一
      resultType用来指定将结果映射到哪个类(包名+类名)
      sql语句中的#{id}由测试类通过命名空间和id来定位到哪一条sql,并将值传入
    -->
   <select id="selectUser" resultType="Mybatis.User">
      select * from user where user_id = #{id}
   </select>
</mapper>

–注解方式:新建UserMapper接口

package Mybatis;

import org.apache.ibatis.annotations.Select;
public interface UserMapper {
	/*
	 * 映射器的作用:承载sql语句,提供接口来调用sql语句
	 * 映射器的特点:可以通过唯一的方式访问每一个sql语句
	 * 				--在xml配置中通过namespace和id来确定调用哪一条sql
	 * 				--注解中通过接口中的方法来确定调用哪一条sql
	 * 使用注解修饰接口实现映射器:#{param1}代表相应的方法的第一个参数
	 */
	
	@Select("select * from user where user_id=#{param1}")
	public User selectOne(int user_id);

}

结构图如下:
在这里插入图片描述
二、基于xml配置实现映射器Mapper测试

package Mybatis;

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 MybatisDemo {

	public static void main(String[] args) {
		
		/*测试mybatis
		 * 1、加载全局配置文件
		 * 2、构建会话工厂
		 * 3、执行sql
		 */
		// 指定全局配置文件
        String resource = "MybatisConfig.xml";
        // 读取配置文件
        InputStream inputStream = null;
        try {
			inputStream = Resources.getResourceAsStream(resource);
		} catch (IOException e) {
			System.out.println("读取全局配置文件失败!!");
		}
        //创建会话工厂
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        // 获取sqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        // 第一个参数:指定statement,规则:命名空间+“.”+statementId
        // 第二个参数:指定传入sql的参数:这里是用户id
//        User user = sqlSession.selectOne("MyMapper.selectUser", 1);
//        System.out.println(user);
          sqlSession.close();
	}
}

三、基于注解配置实现映射器Mapper测试

package Mybatis;

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 MybatisDemo {

	public static void main(String[] args) {
		
		/*测试mybatis
		 * 1、加载全局配置文件
		 * 2、构建会话工厂
		 * 3、执行sql
		 */
		// 指定全局配置文件
        String resource = "MybatisConfig.xml";
        // 读取配置文件
        InputStream inputStream = null;
        try {
			inputStream = Resources.getResourceAsStream(resource);
		} catch (IOException e) {
			System.out.println("读取全局配置文件失败!!");
		}
        //创建会话工厂
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        // 获取sqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();
        // 第一个参数:指定statement,规则:命名空间+“.”+statementId
        // 第二个参数:指定传入sql的参数:这里是用户id
//        User user = sqlSession.selectOne("MyMapper.selectUser", 1);
//        System.out.println(user);
        
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        System.out.println(userMapper.selectOne(1));
        sqlSession.close();
	}
}

注意在全局配置文件的文件头和xml配置Mapper的文件头是不一样的:
MybatisConfig.xml:
在这里插入图片描述
Mapper.xml:
在这里插入图片描述
因为他们的根标签是不一样的,如果不是这样的配置会报错:

在这里插入图片描述在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值