iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Mybatis配置详解
  • 229
分享到

Mybatis配置详解

mybatisjavaspringmysqlmaven 2023-10-25 12:10:28 229人浏览 八月长安
摘要

mybatis 1、mybatis的作用2、封装JDBC3、mybatis基于XML配置4、Mapper代理开发 1、mybatis的作用 再mvc三层模式中mybatis作用于

mybatis

1、mybatis的作用

mvc三层模式中mybatis作用于DAO层。

进行与数据库连接。

事务管理:支持数据操作进行手动或自动事务管理,确保数据
提交的一致性和可靠性。

通过sql语句执行对数据库的CRUD操作,提供数据持久化。

2、封装JDBC

MyBatis相较于JDBC简化了以下开发

  1. 数据库连接管理:使用JDBC进行数据库操作时,需要手动获取数据库连接、释放数据库连接等操作,在高并发的情况下还需要面对连接池的问题。而在MyBatis中,数据源(DataSource)等连接管理工作都被封装好了,用户只需要关注执行SQL语句即可。

  2. 预处理和执行SQL语句:在JDBC中,需要通过Statement对象或PreparedStatement对象来进行预处理和执行SQL语句。MyBatis将执行SQL语句的相关操作都封装成接口方法,用户通过Mapper文件或注解来配置对应的SQL语句,消除了样板式代码,使得代码更加简洁易懂。

  3. 处理结果集:在JDBC中,需要使用ResultSet对象来处理查询结果集,通过访问ResultSet对象的列名或是序号来获取结果。而在MyBatis中,支持将查询结果自动封装为Java属性对象列表或者Map映射,可以避免重复的属性名称声明以及类型不匹配的异常。

  4. 事务管理:JDBC需要通过spring框架或编写大量的代码来进行事务管理。而MyBatis提供了默认的SqlSession事务模式、支持Spring事务以及托管给全局事务管理器三种事务管理方式,并且对事务Rollback、Commit进行了封装,简化了事务处理流程。

MyBatis采用了不同的架构和设计理念,封装了JDBC底层操作,并提供了更方便、高效的CRUD编程接口以及自动参数映射和结果集处理,大大简化了数据库开发。

3、mybatis基于XML配置

创建Maven项目
2、在maven项目中下载mybatis和Mysql的依赖

pom.xml
 <dependencies>        <dependency>            <groupId>org.mybatis</groupId>            <artifactId>mybatis</artifactId>            <version>3.5.7</version>        </dependency>        <!-- mysql Connector -->        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <version>5.1.46</version>        </dependency>    </dependencies>

创建mybatis核心配置文件,在src\main\resources下创建mybatis-config.xml文件

src\main\resources\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>    <!-- 数据库连接相关 -->    <environments default="development">        <environment id="development">            <transactionManager type="JDBC"/>            <!-- 配置数据源,注意这里要配置自己的数据库驱动和连接参数 -->            <dataSource type="POOLED">                <property name="driver" value="com.mysql.jdbc.Driver"/>                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8"/>                <property name="username" value="root"/>                <property name="passWord" value="123456"/>            </dataSource>        </environment>    </environments>    <!-- 映射器 -->    <mappers>        <!-- 引入映射文件,如果有多个文件,则在此处添加 -->        <mapper resource="UserMapper.xml"/>    </mappers></configuration>

注意在这些代码中修改自己的mysql配置

      <transactionManager type="JDBC"/>      <!-- 配置数据源,注意这里要配置自己的数据库驱动和连接参数 -->      <dataSource type="POOLED">        <property name="driver" value="com.mysql.cj.jdbc.Driver"/>        <property name="url" value="jdbc:mysql://localhost:3306/exampleDB?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8"/>        <property name="username" value="root"/>        <property name="password" value="123456"/>    

创建UserMapper.xml文件

src\main\resources\UserMapper.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="UserMapper">    <!-- 定义查询所有用户的 SQL 语句-->    <select id="findAllUsers" resultType="src.main.com.example.DAO.User">        SELECT * FROM tb_user;    </select>    <!-- 定义根据用户 ID 查询用户的 SQL 语句-->    <select id="findUserById" parameterType="int" resultType="src.main.com.example.DAO.User">        SELECT * FROM tb_user WHERE id = #{id};    </select>    <!-- 定义新增用户的 SQL 语句-->    <insert id="addUser" parameterType="src.main.com.example.DAO.User">        INSERT INTO tb_user(username, password) VALUES (#{username}, #{password});    </insert>    <!-- 定义根据用户 ID 删除用户的 SQL 语句-->    <delete id="deleteUserById" parameterType="int">        DELETE FROM tb_user WHERE id = #{id};    </delete>    <!-- 定义根据用户 ID 更新用户密码的 SQL 语句-->    <update id="updatePasswordById" parameterType="map">        UPDATE tb_user SET password = #{newPassword} WHERE id = #{userId};    </update></mapper>

创建数据库的实体类,实体类要根据我们创建的mysql数据库相对应
实体类中的每一个属性,都有一个mysql属性与之相对应
在这里插入图片描述

src\main\java\com\example\pojo\User.java
package src.main.com.example.pojo;public class User {    private Integer id;    private String username;    private int password;    private String gender;    private String addr;    public User() {    }    public User(int id, String username, int password, String gender, String addr) {        this.id = id;        this.username = username;        this.password = password;        this.gender = gender;        this.addr = addr;    }    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public int getPassword() {        return password;    }    public void setPassword(int password) {        this.password = password;    }    public String getGender() {        return gender;    }    public void setGender(String gender) {        this.gender = gender;    }    public String getAddr() {        return addr;    }    public void setAddr(String addr) {        this.addr = addr;    }    @Override    public String toString() {        return "User{" +                "id=" + id +                ", username='" + username + '\'' +                ", password=" + password +                ", gender='" + gender + '\'' +                ", addr='" + addr + '\'' +                '}';    }}

创建测试

src\main\java\com\example\text\Text.java
package src.main.com.example.text;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;import java.util.List;public class Text{    public static void main(String[] args) throws IOException {        // 加载核心配置文件路径        String resource = "mybatis-config.xml";        //通过SqlesSsionFactor实例化SqlSessionFactor        //然后通过SqlSessionFactor的openSqlSession()方法获取SqlSession对象        InputStream inputStream = Resources.getResourceAsStream(resource);        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);        SqlSession sqlSession = sqlSessionFactory.openSession();        //使用SqlSession来执行SQL语句        List<User> user = sqlSession.selectList("UserMapper.findAllUsers");        System.out.println(user);        sqlSession.close();    }}

4、Mapper代理开发

mapper代理开发,让我们在调用sql语句时会更加方便
我们在原来的配置上进行如下修改

创建一个与映射文件(UserMapper.xml)同名的接口文件,

接口文件中定义方法,方法名与映射文件中的id一致,返回
类型也要和resultType一致

注意返回是一个对象还是多个对象,多个对象要用list集合接收

下面我们创建与映射文件同名的接口,并且定义方法src/main/com/example/mapper/UserMapper
ackage src.main.com.example.mapper;public interface UserMapper {   list<User> findAllUsers();   User findUserById();    User  addUser();   User deleteUserById();   User updatePasswordById();}

第二步要将我们的映射文件(UserMapper.xml)与接口文件(UserMapper)放在同一个包中

1、方法一:直接将映射文件拖入mapper包下2、方法二:为了统一管理,我们直接在reserces下创建一个com/example/mapper,再将映射文件拖入该文件下,可以达到同样的效果

修改映射文件的namespace,以前这个值是可以谁便取得,但现在要将它改为接口文件的路径

在UserMapper.xml中修改namespace
<?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="src/main/com/example/mapper">    <!-- 定义查询所有用户的 SQL 语句-->    <select id="findAllUsers" resultType="src.main.com.example.DAO.User">        SELECT * FROM tb_user;    </select>    <!-- 定义根据用户 ID 查询用户的 SQL 语句-->    <select id="findUserById" parameterType="int" resultType="src.main.com.example.DAO.User">        SELECT * FROM tb_user WHERE id = #{id};    </select>    <!-- 定义新增用户的 SQL 语句-->    <insert id="addUser" parameterType="src.main.com.example.DAO.User">        INSERT INTO tb_user(username, password) VALUES (#{username}, #{password});    </insert>    <!-- 定义根据用户 ID 删除用户的 SQL 语句-->    <delete id="deleteUserById" parameterType="int">        DELETE FROM tb_user WHERE id = #{id};    </delete>    <!-- 定义根据用户 ID 更新用户密码的 SQL 语句-->    <update id="updatePasswordById" parameterType="map">        UPDATE tb_user SET password = #{newPassword} WHERE id = #{userId};    </update></mapper>

由于映射文路径置改了,我们的配置文件要引入映射文件,
也要修改为相同路径

修改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>    <!-- 数据库连接相关 -->    <environments default="development">        <environment id="development">            <transactionManager type="JDBC"/>            <!-- 配置数据源,注意这里要配置自己的数据库驱动和连接参数 -->            <dataSource type="POOLED">                <property name="driver" value="com.mysql.jdbc.Driver"/>                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8"/>                <property name="username" value="root"/>                <property name="password" value="123456"/>            </dataSource>        </environment>    </environments>    <!-- 映射器 -->    <mappers>        <!-- 引入映射文件,如果有多个文件,则在此处添加 -->        <mapper resource="src/main/com/example/mapper/UserMapper.xml"/>    </mappers></configuration>

测试时我们不在使用sqlSessioj的方法,而是使用sqlSession.getMapper()
获取UserMapper接口代理对象,在调用接口中的方法

src/main/java/com/example/text/Text.java
import java.io.IOException;import java.io.InputStream;import java.util.List;public class Text{    public static void main(String[] args) throws IOException {        // 加载核心配置文件路径        String resource = "mybatis-config.xml";        //通过SqlesSsionFactor实例化SqlSessionFactor        //然后通过SqlSessionFactor的openSqlSession()方法获取SqlSession对象        InputStream inputStream = Resources.getResourceAsStream(resource);        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);        SqlSession sqlSession = sqlSessionFactory.openSession();        //使用SqlSession.getMapper()来获取UserMapper接口对象       UserMapper mapper=sqlSession.getMapper(UserMapper.class);       //调用接口方法       List<User> user= mapper.findAllUsers();                      System.out.println(user);        sqlSession.close();    }}

来源地址:https://blog.csdn.net/drhnb/article/details/130665836

您可能感兴趣的文档:

--结束END--

本文标题: Mybatis配置详解

本文链接: https://www.lsjlt.com/news/442377.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Mybatis配置详解
    mybatis 1、mybatis的作用2、封装JDBC3、mybatis基于XML配置4、Mapper代理开发 1、mybatis的作用 再MVC三层模式中mybatis作用于...
    99+
    2023-10-25
    mybatis java spring mysql maven
  • mybatis学习笔记之mybatis注解配置详解
    Java API既然你已经知道如何配置 MyBatis 和创建映射文件,你就已经准备好来提升技能了。 MyBatis 的 Java API 就是你收获你所做的努力的地方。正如你即将看到的,和 JDBC 相比, MyBatis 很大程度简化了...
    99+
    2023-05-30
    mybatis 注解 配置
  • 详解Mybatis核心配置文件
    Mybatis核心配置文件 记录在mybatis核心配置文件中,常用的配置选项: 下边是之前的配置选项: <?xml version="1.0" encoding=...
    99+
    2022-11-12
  • MyBatis全局配置文件详解
    目录MyBatis全局配置文件settings设置typeAliases类型命名存在的问题:@Alias("")environments环境transactionManager事务管...
    99+
    2022-11-12
  • Mybatis Properties 配置优先级详解
    Properties 配置方式 Mybatis提供了三种配置方式: properties元素体内property子元素 properties配置文件 程序参...
    99+
    2022-11-12
  • mybatis-plus在yml中配置详解
    目录pom配置正常使用基础配置扩展配置pom配置 <dependency> <groupId>com.baomidou</groupId>...
    99+
    2023-02-24
    mybatis-plus yml配置 mybatis-plus yml
  • Mybatis配置之<environments>配置元素详解
    目录我们先来看一下配置还是从解析的入口开始看起进入方法内部isSpecifiedEnvironment方法如下所示这两种事务管理器的区别下面分别对这三种类型做一个简单的说明(1)UN...
    99+
    2022-11-13
  • MyBatis配置与CRUD超详细讲解
    目录CRUD增删改查示例代码Map传参模糊查询MyBatis配置解析核心配置文件mybatis-config.xml环境变量(Environments)属性(Properties)类...
    99+
    2023-02-21
    MyBatis配置解析 MyBatis CRUD
  • 详解SpringBoot和Mybatis配置多数据源
    目前业界操作数据库的框架一般是 Mybatis,但在很多业务场景下,我们需要在一个工程里配置多个数据源来实现业务逻辑。在SpringBoot中也可以实现多数据源并配合Mybatis框架编写xml文件来执行SQL。在SpringBoot中,配...
    99+
    2023-05-31
    springboot mybatis 多数据源
  • 在IDEA中maven配置MyBatis的流程详解
    一.MyBatis简介 1)MyBatis 是一款优秀的持久层框架 2)MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程 3)MyBatis 可以使...
    99+
    2022-11-12
  • mybatis-config详细配置说明
    <xml version="1.0" encoding="utf-8"> <!DOCTYPE configuration PUBLIC "...
    99+
    2022-10-18
  • Mybatis的详细配置方法
    这篇文章主要介绍“Mybatis的详细配置方法”,在日常操作中,相信很多人在Mybatis的详细配置方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Mybatis的详细配置方法”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-20
  • 使用IDEA配置Mybatis-Plus框架图文详解
    目录一、什么是Mybatis-Plus框架?二、Mybatis有些什么特性?三、IDEA创建SpringBoot项目 1、创建Spring Initializr模块2、测试...
    99+
    2022-11-11
  • MyBatis核心配置文件及映射文件详解
    目录什么是SSMMyBatis特性MyBatis和其它持久化技术对比JDBCHibernate和JPAMyBatis创建MyBatis的核心配置文件创建mapper接口创建MyBat...
    99+
    2023-01-13
    MyBatis 核心配置文件映射 MyBatis 核心配置文件 MyBatis 映射文件
  • 详细分析mybatis中的setting配置
    这篇文章主要详细分析mybatis中的setting配置,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。在mybaits中,setting的的配置参数如下(如果不在配置文件中配置将使用默认值):设置参数描述有效值...
    99+
    2023-05-31
    mybatis setting setti
  • mybatis中怎么配置注解
    mybatis中怎么配置注解,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。注解与xml配置的对应关系mybatis中注解就是简单不需要写配置文件,适合简单的数据处理,理解起来比...
    99+
    2023-06-20
  • 详解MyBatis的Dao层实现和配置文件深入
    目录Mybatis的Dao层实现传统开发方式代理开发方式MyBatis映射文件深入动态sql语句SQL片段抽取MyBatis核心配置文件深入typeHandlers标签plugins...
    99+
    2022-11-13
  • MyBatis配置文件解析与MyBatis实例演示
    MyBatis介绍 MyBatis是一个持久层的ORM框架,使用简单,学习成本较低。可以执行自己手写的SQL语句,比较灵活。但是MyBatis的自动化程度不高,移植性也不高,有时从一...
    99+
    2022-11-13
  • 详解Spring Boot整合Mybatis实现 Druid多数据源配置
    一、多数据源的应用场景目前,业界流行的数据操作框架是 Mybatis,那 Druid 是什么呢?Druid 是 Java 的数据库连接池组件。Druid 能够提供强大的监控和扩展功能。比如可以监控 SQL ,在监控业务可以查询慢查询 SQL...
    99+
    2023-05-31
    spring 多数据源 spring boo
  • mybatis实现mapper配置并查询数据的思路详解
    mapper开发 开发规范: 2.mapper.java接口中的方法名和mapper.xml中statement的id一致 3.mapper.java接口中的方法输入参数类型和ma...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作