Mybatis框架搭建指南

本文详细介绍Mybatis框架的搭建步骤,包括导入依赖、配置环境、编写SQL语句及读取配置等内容,适用于初学者快速掌握Mybatis的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mybatis框架搭建指南

前言:最近打算把SSM框架的搭建和使用都复习一遍,写写博客,加深记忆。

一.导入框架依赖包

使用maven管理依赖包,在maven仓库中找到Mybatis和Mysql的依赖包,加入到pom文件的依赖中。

二.配置Mybatis框架

Mybatis有两种配置方式,第一种是xml方式,第二种是java方式。下面我们先来讲一下第一种xml该如何配置。
.

xml配置Mybatis框架

  1. 创建配置文件,名称随意,但尽量规范起名,如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">
<configuration>

    <properties>
        <property name="url" value="jdbc:mysql://localhost:3306/musicsite?characterEncoding=utf8&amp;useSSL=true&amp;serverTimezone=UTC"></property>
        <property name="driver" value="com.mysql.cj.jdbc.Driver"></property>
        <property name="username" value="root"></property>
        <property name="password" value="root"></property>
    </properties>

    <typeAliases>
        <typeAlias type="FrameWork.bean.User" alias="User"></typeAlias>
        <package name="FrameWork.bean"></package>
    </typeAliases>
  
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>//此处使用上面配置driver属性的值
                <property name="url" value="${url}"/>//同上
                <property name="username" value="${username}"/>//同上
                <property name="password" value="${password}"/>//同上
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="FrameWork/Mapper/UserMapper.xml"></mapper>
    </mappers>
</configuration>
  1. 加载mapper文件有三种方式:
    (1) 使用mapper标签中的resource属性,使用这种方式配置,mapper文件和接口不需要在同一包下,只需要配置mapper文件的路径(相对于classpath),并确保mapper文件中的命名空间与mapper接口的路径一致即可。
    (2) 使用mapper标签中的class属性,使用这种方式配置,mapper文件必须和mapper接口在同一包,并且mapper文件必须与mapper接口的名字相同,mapper文件的命名空间与接口的路径相同。class属性配置为mapper接口的路径(相对于classpath)。
    (3) 使用package标签批量添加mapper文件,使用这种方式配置,mapper文件必须与接口在同一包下,mapper文件的名字与接口名相同,且mapper文件的命名空间为接口的路径。
    PS:在IDEA中不会自动编译xml文件,因此,当你使用idea开发时,出现接口类与mapper文件没有映射对的情况时,你可以查看编译好的class目录里,查看是否有xml文件,如果没有可以添加在pom文件中添加以下代码,重新编译。
        <resources>
    	          <resource>
    	               <directory>src/main/java</directory>
    	               <includes>
    	                   <include>**/*.xml</include>
    	               </includes>
    	           </resource>
        </resources>
    
  2. 配置数据源时应注意mysql8.0驱动的连接字符串必须加上时区。
  3. 配置事务管理器时可以选择JDBC/MANAGED。
    (1) JDBC配置直接使用了 JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务作用域。利用java.sql.Connection对象完成对事务的提交。
    (2) MANAGED – 这个配置几乎没做什么。它从来不提交或回滚一个连接,而是让容器(比如 tomcat,weblogic)来管理事务的整个生命周期。 默认情况下它会关闭连接,然而一些容器并不希望这样,因此需要将 closeConnection 属性设置为 false 来阻止它默认的关闭行为。
  4. 使用typeAliases配置类型别名
    (1) typeAlias标签用于配置单个bean,其中type属性为bean的全类名,alias属性为bean的别名。
    (2) package标签可批量配置bean,name属性为bean所在的包名,Mybatis会自动扫描该包,寻找对应的bean。

java配置Mybatis

1.创建Mybatis配置类

public class MybatisConfig {

    public void  ConfigurationMybatis()
    {
        Properties properties=new Properties();
        properties.setProperty("url","jdbc:mysql://localhost:3306/musicsite?characterEncoding=utf8&amp;useSSL=true&amp;serverTimezone=UTC");
        properties.setProperty("driver","com.mysql.cj.jdbc.Driver");
        properties.setProperty("username","root");
        properties.setProperty("password","root");
        PooledDataSourceFactory pooledDataSourceFactory = new PooledDataSourceFactory();
        pooledDataSourceFactory.setProperties(properties);//配置数据源属性
        DataSource dataSource=pooledDataSourceFactory.getDataSource();
        TransactionFactory transactionFactory = new JdbcTransactionFactory();//事务管理器为JDBC
        Environment environment = new Environment("development", transactionFactory, dataSource);//配置开发环境
        Configuration configuration = new Configuration(environment);//将环境加入配置
        configuration.getTypeAliasRegistry().registerAlias("userbase",userbase.class);
        configuration.addMapper(UserDAO.class);//注册接口
        configuration.addInterceptor(new SqlInvocation());//配置sql拦截器
    }
}

2.加载mapper文件
1.使用Configuration对象的addMapper()方法,指定要添加的接口类型,一次注册一个接口,使用这个方法,同样需要接口名与mapper文件名称相同,mapper命名空间为接口的路径,接口与mapper文件在同一包下。
2. 使用Configuration对象的addMappers()方法,指定要扫描的mapper文件路径,与addMapper()方法相同,addMappers()方法也要求接口名与mapper文件名称相同,mapper命名空间为接口的路径,接口与mapper文件在同一包下。
3. 配置数据源时应注意mysql8.0驱动的连接字符串必须加上时区。需要切换其他数据源则使用其他的工厂类创建数据源对象(如UnpooledDataSourceFactory,JndiDataSourceFactory),然后加入到环境对象中。
4. 你可以通过创建不同的事务管理器工厂来切换事务管理器,例如你要切换为MANAGED 配置,则创建ManagedTransactionFactory对象,然后加入配置中。
5. 配置别名要先通过configuration对象的getTypeAliasRegistry方法获取TypeAliasRegistry对象,然后调用方法配置别名,注意配置别名的操作必须放在注册mapper接口的前面,否则mybatis解析mapper文件时会找不到别名对应的类。

三.配置Sql语句

在配置sql语句方面,Mybatis同样提供java配置和xml配置两种方式。

xml配置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">
<mapper namespace="FrameWork.DAO.UserMapper">

    <select id="selectUser" resultType="user" parameterType="Long">
        select * from user where id = #{id}
    </select>
    
</mapper>

对于这种Mapper文件,Mybatis提供专门的xml语法。开发人员所有的配置都在mapper标签中进行。读者可以直接复制上方的代码到xml文件中,然后删除此处select标签,自行实现sql语句。mapper标签中关于描述sql语句的标签有select,insert,delete,update。
(1) select标签用于查询语句。其中id属性用于唯一标识,id名应与java接口的方法名一一对应,resultType属性用于确定将结果集转换为哪种类型的javabean,parameterType
代表传入的参数类型。
(2) insert标签用于插入语句。
(3) delete标签用于删除语句。
(4) update标签用于更新语句。
以上标签都有id,resultType,parameterType,parameterMap,resultMap属性.。id代表对应接口的方法名。resultType和resultMap都代表结果集的转换类型,前者只有在javabean的属性名与数据库列名相同时才能使用,后者则是在属性名与列名不同时使用,使用时还需要定义resultMap,在标签内定义好数据库字段与javabean属性的映射关系。parameterType和parameterMap的关系与resultType和resultMap相同,只不过这是两个控制输入类型的标签。
在上面的例子中,我们可以看到在select标签中有一个 #{id},这代表这条语句会获取一个名为id的输入参数,而这个输入参数正是我们在接口定义的入参。如果定义的是一个java bean作为输入参数,那么你可以用#{属性名}的形式获取参数中的值。

四.读取配置

使用xml配置框架和使用java配置框架,除了在读取配置时有些区别之外,在其他时候都相同的,下面我们先看看使用xml配置如何读取配置。

读取xml配置

package FrameWork.util;

import com.sun.imageio.plugins.jpeg.JPEGImageReaderResources;
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 sqlSessionUtil {

    public static SqlSessionFactory getSqlSessionFactory() throws IOException {
        InputStream inputStream= Resources.getResourceAsStream("Mybatis_Config.xml");
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
        return sqlSessionFactory;
    }
    public static SqlSession getSqlSession() throws IOException {
        SqlSessionFactory sqlSessionFactory=sqlSessionUtil.getSqlSessionFactory();
        return sqlSessionFactory.openSession();
    }
}

可以看到这里直接通过Mybatis提供的Resource类读取Mybatis_Config.xml配置文件。而getResourceAsStream()方法是从classpath下寻找文件的。所以配置文件必须要加入到classpath路径下,才能读取到。接着使用这个流就可以创建SqlSessionFactory 对象,再通过该对象获取sqlSession对象。

读取java配置

    public static SqlSession getSession(Configuration configuration)
    {
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);//根据配置生产SqlSessionFactory对象
        return sqlSessionFactory.openSession();
    }

configuration就是使用java配置出的最终配置对象,将对象传SqlSessionFactoryBuilder的build方法中就可以获得sqlSessionFactory对象,再使用sqlSessionFactory获取一个sqlSession对象。

五.测试框架

    @Test
    public void getUser() throws IOException {
        SqlSession sqlSession= sqlSessionUtil.getSqlSession();
        UserMapper userMapper =sqlSession.getMapper(UserMapper.class);
        List<user> list= userMapper.selectUser(1L);
        for (user list) {
            System.out.println(u);
        }
    }

不管是java配置还是xml配置的,在最终的使用上都是相同的。获取到SqlSession对象。然后调用getMapper方法获取userMapper接口的实例。这里实例是由Mybatis通过动态代理实例化得到的。得到接口的实例后就可以调用方法查询数据库了。

测试结果:

在这里插入图片描述

基于数据挖掘的音乐推荐系统设计与实现 需要一个代码说明,不需要论文 采用python语言,django框架,mysql数据库开发 编程环境:pycharm,mysql8.0 系统分为前台+后台模式开发 网站前台: 用户注册, 登录 搜索音乐,音乐欣赏(可以在线进行播放) 用户登陆时选择相关感兴趣的音乐风格 音乐收藏 音乐推荐算法:(重点) 本课题需要大量用户行为(如播放记录、收藏列表)、音乐特征(如音频特征、歌曲元数据)等数据 (1)根据用户之间相似性或关联性,给一个用户推荐与其相似或有关联的其他用户所感兴趣的音乐; (2)根据音乐之间的相似性或关联性,给一个用户推荐与其感兴趣的音乐相似或有关联的其他音乐。 基于用户的推荐和基于物品的推荐 其中基于用户的推荐是基于用户的相似度找出相似相似用户,然后向目标用户推荐其相似用户喜欢的东西(和你类似的人也喜欢**东西); 而基于物品的推荐是基于物品的相似度找出相似的物品做推荐(喜欢该音乐的人还喜欢了**音乐); 管理员 管理员信息管理 注册用户管理,审核 音乐爬虫(爬虫方式爬取网站音乐数据) 音乐信息管理(上传歌曲MP3,以便前台播放) 音乐收藏管理 用户 用户资料修改 我的音乐收藏 完整前后端源码,部署后可正常运行! 环境说明 开发语言:python后端 python版本:3.7 数据库:mysql 5.7+ 数据库工具:Navicat11+ 开发软件:pycharm
MPU6050是一款广泛应用在无人机、机器人和运动设备中的六轴姿态传感器,它集成了三轴陀螺仪和三轴加速度计。这款传感器能够实时监测并提供设备的角速度和线性加速度数据,对于理解物体的动态运动状态至关重要。在Arduino平台上,通过特定的库文件可以方便地与MPU6050进行通信,获取并解析传感器数据。 `MPU6050.cpp`和`MPU6050.h`是Arduino库的关键组成部分。`MPU6050.h`是头文件,包含了定义传感器接口和函数声明。它定义了类`MPU6050`,该类包含了初始化传感器、读取数据等方法。例如,`begin()`函数用于设置传感器的工作模式和I2C地址,`getAcceleration()`和`getGyroscope()`则分别用于获取加速度和角速度数据。 在Arduino项目中,首先需要包含`MPU6050.h`头文件,然后创建`MPU6050`对象,并调用`begin()`函数初始化传感器。之后,可以通过循环调用`getAcceleration()`和`getGyroscope()`来不断更新传感器读数。为了处理这些原始数据,通常还需要进行校准和滤波,以消除噪声和漂移。 I2C通信协议是MPU6050与Arduino交互的基础,它是一种低引脚数的串行通信协议,允许多个设备共享一对数据线。Arduino板上的Wire库提供了I2C通信的底层支持,使得用户无需深入了解通信细节,就能方便地与MPU6050交互。 MPU6050传感器的数据包括加速度(X、Y、Z轴)和角速度(同样为X、Y、Z轴)。加速度数据可以用来计算物体的静态位置和动态运动,而角速度数据则能反映物体转动的速度。结合这两个数据,可以进一步计算出物体的姿态(如角度和角速度变化)。 在嵌入式开发领域,特别是使用STM32微控制器时,也可以找到类似的库来驱动MPU6050。STM32通常具有更强大的处理能力和更多的GPIO口,可以实现更复杂的控制算法。然而,基本的传感器操作流程和数据处理原理与Arduino平台相似。 在实际应用中,除了基本的传感器读取,还可能涉及到温度补偿、低功耗模式设置、DMP(数字运动处理器)功能的利用等高级特性。DMP可以帮助处理传感器数据,实现更高级的运动估计,减轻主控制器的计算负担。 MPU6050是一个强大的六轴传感器,广泛应用于各种需要实时运动追踪的项目中。通过 Arduino 或 STM32 的库文件,开发者可以轻松地与传感器交互,获取并处理数据,实现各种创新应用。博客和其他开源资源是学习和解决问题的重要途径,通过这些资源,开发者可以获得关于MPU6050的详细信息和实践指南
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值