MyBatis框架环境搭建(详解)

✨前言✨

1.如果代码对您有帮助  欢迎点赞👍+收藏⭐哟   后面如有问题可以私信评论哟🗒️
2.博主后面将持续更新哟😘

🐲一、什么是MyBatis框架

MyBatis 是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plain Old JavaObjects,普通的Java对象)映射成数据库中的记录。

MyBatis 的主要特性包括:

  1. 动态SQL:MyBatis 支持动态SQL,使得编写灵活的SQL语句成为可能,可以通过XML或者注解的方式定义SQL语句,并在运行时动态地生成SQL。
  2. 延迟加载:可以设置懒加载,按需加载关联对象,优化性能。
  3. 缓存机制:MyBatis 包含一个非常强大的查询缓存机制,它可以缓存查询结果,减少数据库访问次数,提高性能。
  4. 插件:MyBatis 允许用户自定义插件,这些插件可以修改MyBatis的一些核心行为,如SQL打印、分页、事务等。

🙉二、MyBatis框架环境搭建操作

1、创建web项目

在这里插入图片描述

2、在项目的WEB-INF的下面创建一个lib目录,在导入jar包

MyBatis的官方网站是:点击即可可以下载到最新的Release(发布)版本的MyBatis。目前MyBatis官网在国内访问受限,可以去Github下载,地址为:点击即可 这个地址中找到mybatis-3.2.2、mybatis-3-mybatis-3.2.2.zip(通过相应版本的”Source Code(zip)” 链接下载)。

mybatis-3.2.2.zip(MyBatis的jar文件)
mybatis-3.2.2.zip解压后的目录结构为;

在这里插入图片描述

3、在resources下面创建3个配置文件

在这里插入图片描述

① 数据源文件: database.properties

放入以下代码,注意: 修改成自己的,账号、密码、数据库名

#在和mysql传递数据的过程中,使用unicode编码格式,并且字符集设置为utf-8
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/数据库名?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull
user=root//账号
password=SASA//密码
② 日志文件: log4j.properties
log4j.rootLogger=DEBUG,CONSOLE,file
#log4j.rootLogger=ERROR,ROLLING_FILE
log4j.logger.cn.smbms.dao=debug
log4j.logger.com.ibatis=debug 
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug 
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug 
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug 
log4j.logger.java.sql.Connection=debug 
log4j.logger.java.sql.Statement=debug 
log4j.logger.java.sql.PreparedStatement=debug 
log4j.logger.java.sql.ResultSet=debug 
log4j.logger.org.tuckey.web.filters.urlrewrite.UrlRewriteFilter=debug

######################################################################################
# Console Appender  \u65e5\u5fd7\u5728\u63a7\u5236\u8f93\u51fa\u914d\u7f6e
######################################################################################
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=error
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern= [%p] %d %c - %m%n


######################################################################################
# DailyRolling File  \u6bcf\u5929\u4ea7\u751f\u4e00\u4e2a\u65e5\u5fd7\u6587\u4ef6\uff0c\u6587\u4ef6\u540d\u683c\u5f0f:log2009-09-11
######################################################################################
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender
log4j.appender.file.DatePattern=yyyy-MM-dd
log4j.appender.file.File=log.log
log4j.appender.file.Append=true
log4j.appender.file.Threshold=error
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-M-d HH:mm:ss}%x[%5p](%F:%L) %m%n


log4j.logger.com.opensymphony.xwork2=error  

③ Mybatis框架文件: 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">

<!-- 通过这个配置文件完成mybatis与数据库的连接 -->
<configuration>
	<!-- 引入 database.properties 文件-->
	<properties resource="database.properties"/>
	<!-- 配置mybatis的log实现为LOG4J -->
	<settings>
		<setting name="logImpl" value="LOG4J" />
	</settings>

	<!--  别名,给指定的包,生成'别名''类名''别名'
	作用:给sql映射文件,在查询功能中作为返回值使用。
	-->
	<typeAliases>
		<package name="com.gd.pojo"/>
	</typeAliases>

	<environments default="development">
		<environment id="development">
			<!--配置事务管理,采用JDBC的事务管理  -->
			<transactionManager type="JDBC"></transactionManager>
			<!-- POOLED:mybatis自带的数据源,JNDI:基于tomcat的数据源 -->
			<dataSource type="POOLED">
				<property name="driver" value="${driver}"/>
				<property name="url" value="${url}"/>
				<property name="username" value="${user}"/>
				<property name="password" value="${password}"/>
			</dataSource>
		</environment>
	</environments>
	
	<!-- 将mapper文件加入到配置文件中 -->
	<mappers>
		<mapper resource="com/gd/dao/mapper/UserMapper.xml"/>
	</mappers>



</configuration>

4、在项目开始创建实体类(com.gd.pojo)

说明:类名根据数据库表名来的。类中的属性与表中的字段也是必须一样同名,目的是为了框架自动映射数据到实体类中。

在这里插入图片描述

5、创建工具MybatisUtil.java类(com.gd.utils)

说明: 辅助我们去连接与操作数据库。

在这里插入图片描述

放入以下代码

package com.gd.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.InputStream;

public class MybatisUtil {
    //1、定义全局SqlSession 工厂对象
    private static SqlSessionFactory factory;
    static {
        try {
            //2、加载mybatis-config.xml
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
            //3、创建工厂对象
            factory = new SqlSessionFactoryBuilder().build(is);

        }catch (IOException e){
            e.printStackTrace();
        }
    }
    //4、创建 SqlSession对象
    public static SqlSession createSqlSession(){
        //true表示自动提交,增,删,改sql操作。
        //false表示开启事务控制
        return factory.openSession(false);
    }
    //5、关闭SqlSession对象
    public static void closeSqlSession(SqlSession sqlSession){
        if (sqlSession != null){
            sqlSession.close();
        }
    }
}

6、创建接口以及方法(com.gd.dao.mapper)

说明:接口命名规则:实体类名 + Mapper

在这里插入图片描述

放入以下代码

package com.gd.dao.mapper;

import com.gd.pojo.Smbms_user;

import java.util.List;

public interface UserMapper {
    //返回用户记录数
    public int count();

    //查询所有用户
    public List<Smbms_user> findAlls();
}

7、创建sql映射文件(在com.gd.dao. mapper包中创建),文件名必须与接口名一致。

在这里插入图片描述

xml文件中放入以下代码

package com.gd.dao.mapper;

import com.gd.pojo.Smbms_user;

import java.util.List;

public interface UserMapper {
    //返回用户记录数
    public int count();

    //查询所有用户
    public List<Smbms_user> findAlls();
}

8、创建测试目录(com.gd.test)

在这里插入图片描述

放入以下代码

package com.gd.test;

import com.gd.dao.mapper.UserMapper;
import com.gd.pojo.Smbms_user;
import com.gd.utils.MybatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;
import org.junit.Test;

import java.util.List;


public class UserTest {
    private Logger logger = Logger.getLogger(UserTest.class);
    //方法一
    @Test
    public void test1(){
        SqlSession sqlSession = null;
        int count = 0;
        try {
            sqlSession = MybatisUtil.createSqlSession();
            count = sqlSession.selectOne("com.gd.dao.mapper.UserMapper.count");
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            MybatisUtil.closeSqlSession(sqlSession);
        }
        logger.debug(count);
    }

最后运行如下,就成功了

在这里插入图片描述

🤡三、MyBatis框架的优缺点

1. MyBatis框架的优点

  1. 与JDBC相比,减少了50%以上的代码量
  2. 最简单的持久化框架,小巧并简单易学
  3. SQL代码从程序代码中彻底分离,可重用
  4. 提供XML标签,支持编写动态SQL
  5. 提供映射标签,支持实体类对象与数据库的字段映射

2. MyBatis框架的缺点

  1. SQL语句编写工作量大,对开发人员有一定要求
  2. 数据库移植性差
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值