第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Mybatis持久層框架項(xiàng)目實(shí)戰(zhàn)入門教程

標(biāo)簽:
Java SSM 數(shù)據(jù)庫
概述

本文详细介绍了Mybatis持久层框架项目实战,从环境搭建、基本配置到高级功能,全面解析了Mybatis的使用方法。通过具体案例,展示了如何配置Mybatis并与Spring框架集成,确保项目高效运行。文章还总结了常见问题及解决方法,帮助开发者在实际项目中更好地应用Mybatis持久层框架。关键词:mybatis持久层框架项目实战。

Mybatis简介与环境搭建
Mybatis是什么

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以通过简单的 XML 或注解进行配置和原始映射,将接口和 Java 的 POJO 传递给 SqlSession 来执行。

Mybatis的优缺点

优点

  1. 简单易用:MyBatis的学习曲线相对平缓,易于上手。
  2. 灵活性高:MyBatis提供高度灵活的SQL映射,可以编写复杂的SQL语句。
  3. 性能高:MyBatis通过直接操作数据库,减少了对象-关系映射(ORM)层的开销,提高了性能。
  4. 支持存储过程:MyBatis可以很好地支持存储过程,提高业务处理的灵活性。
  5. 插件支持:MyBatis支持自定义插件,可以灵活扩展功能。

缺点

  1. 学习曲线:尽管MyBatis相对简单,但SQL语句的编写和映射文件的配置相对复杂,对新手来说可能需要一定时间来熟悉。
  2. SQL语句硬编码:SQL语句直接写在配置文件中,如果项目变更频繁,可能需要频繁修改配置文件。
  3. 维护性差:MyBatis的配置文件比较复杂,如果项目规模较大,维护起来会比较困难。
  4. 面向对象的复杂性:MyBatis不是完全面向对象的框架,需要手动处理数据库和对象之间的映射关系。
Mybatis的环境搭建与配置

环境搭建

  1. 创建Maven项目
    使用IDEA或其他IDE创建一个新的Maven项目,并配置pom.xml文件。

  2. 引入依赖
    在pom.xml文件中添加MyBatis和数据库驱动的依赖。

    <dependencies>
       <dependency>
           <groupId>org.mybatis</groupId>
           <artifactId>mybatis</artifactId>
           <version>3.5.6</version>
       </dependency>
       <dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
           <version>8.0.23</version>
       </dependency>
    </dependencies>
  3. 创建数据库
    使用MySQL或其他数据库创建一个数据库,并创建一个简单的表来存储一些数据。

    CREATE DATABASE mydb;
    USE mydb;
    
    CREATE TABLE user (
       id INT PRIMARY KEY,
       name VARCHAR(100),
       age INT
    );

配置文件

创建mybatis-config.xml配置文件,配置数据库连接信息和映射文件路径。

<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
                <property name="username" value="root"/>
                <property name="password" value="password"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/mycompany/mapper/UserMapper.xml"/>
    </mappers>
</configuration>

编写测试代码

编写一个简单的Java测试类来验证环境是否搭建成功。

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 MyBatisTest {
    public static void main(String[] args) throws IOException {
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        try (SqlSession session = sqlSessionFactory.openSession()) {
            session.insert("com.mycompany.mapper.UserMapper.createUser");
            session.commit();
        }
    }
}
Mybatis的基本配置与使用
核心配置文件的编写

MyBatis的核心配置文件是mybatis-config.xml,它定义了MyBatis如何配置和运行。配置文件中包含了许多重要的元素,如环境配置、事务管理器、数据源、映射器等。

环境配置

环境配置定义了数据库连接的信息。

<environments default="development">
    <environment id="development">
        <transactionManager type="JDBC"/>
        <dataSource type="POOLED">
            <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
            <property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
            <property name="username" value="root"/>
            <property name="password" value="password"/>
        </dataSource>
    </environment>
</environments>

数据源配置

数据源配置使用了POOLED类型的数据源,这是一种常用的数据库连接池实现。

<dataSource type="POOLED">
    <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
    <property name="username" value="root"/>
    <property name="password" value="password"/>
</dataSource>
Mybatis的常用标签解析

MyBatis的配置文件中包含了许多常用的标签,如<mapper><select><insert><update><delete>等。

<mapper>标签

<mapper>标签定义了映射文件的位置。

<mappers>
    <mapper resource="com/mycompany/mapper/UserMapper.xml"/>
</mappers>

SQL语句标签

<select>标签

<select>标签定义了SQL查询语句。

<select id="getUserById" parameterType="int" resultType="User">
    SELECT * FROM user WHERE id = #{id}
</select>

<insert>标签

<insert>标签定义了SQL插入语句。

<insert id="insertUser" parameterType="User">
    INSERT INTO user (id, name, age) VALUES (#{id}, #{name}, #{age})
</insert>

<update>标签

<update>标签定义了SQL更新语句。

<update id="updateUser" parameterType="User">
    UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}
</update>

<delete>标签

<delete>标签定义了SQL删除语句。

<delete id="deleteUser" parameterType="int">
    DELETE FROM user WHERE id = #{id}
</delete>
Mybatis的映射文件配置与使用

映射文件通常定义了SQL语句和Java对象之间的映射关系。映射文件通常是一个XML文件,位于resources目录下。

映射文件示例

假设有一个UserMapper.xml映射文件,定义了用户表的相关操作。

<mapper namespace="com.mycompany.mapper.UserMapper">
    <select id="getUserById" resultType="User">
        SELECT * FROM user WHERE id = #{id}
    </select>
    <insert id="insertUser">
        INSERT INTO user (id, name, age) VALUES (#{id}, #{name}, #{age})
    </insert>
    <update id="updateUser">
        UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}
    </update>
    <delete id="deleteUser">
        DELETE FROM user WHERE id = #{id}
    </delete>
</mapper>

Java代码示例

在Java代码中,通过MyBatis的SqlSession对象来执行映射文件中的SQL语句。

import org.apache.ibatis.session.SqlSession;

public class UserMapperTest {
    public static void main(String[] args) {
        try (SqlSession session = MyBatisUtil.getSqlSessionFactory().openSession()) {
            UserMapper mapper = session.getMapper(UserMapper.class);
            User user = mapper.getUserById(1);
            System.out.println(user);
        }
    }
}
Mybatis的持久层操作
增删改查基本操作

MyBatis支持基本的CRUD操作,包括insertselectupdatedelete

插入数据

插入数据可以使用INSERT语句。

<insert id="insertUser">
    INSERT INTO user (id, name, age) VALUES (#{id}, #{name}, #{age})
</insert>

在Java代码中执行插入操作。

User user = new User(1, "John Doe", 30);
userMapper.insertUser(user);

查询数据

查询数据可以使用SELECT语句。

<select id="getUserById" resultType="User">
    SELECT * FROM user WHERE id = #{id}
</select>

在Java代码中执行查询操作。

User user = userMapper.getUserById(1);
System.out.println(user.getName());

更新数据

更新数据可以使用UPDATE语句。

<update id="updateUser">
    UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}
</update>

在Java代码中执行更新操作。

User user = new User(1, "Jane Doe", 35);
userMapper.updateUser(user);

删除数据

删除数据可以使用DELETE语句。

<delete id="deleteUser">
    DELETE FROM user WHERE id = #{id}
</delete>

在Java代码中执行删除操作。

userMapper.deleteUser(1);
Mybatis的事务处理

MyBatis支持事务处理,可以通过SqlSession对象来提交或回滚事务。

提交事务

提交事务时,需要调用commit()方法。

SqlSession session = sqlSessionFactory.openSession();
try {
    UserMapper mapper = session.getMapper(UserMapper.class);
    mapper.createUser();
    session.commit();
} finally {
    session.close();
}

回滚事务

如果需要回滚事务,可以调用rollback()方法。

SqlSession session = sqlSessionFactory.openSession();
try {
    UserMapper mapper = session.getMapper(UserMapper.class);
    mapper.createUser();
    // some logic that fails
    session.rollback();
} finally {
    session.close();
}
Mybatis的缓存机制

MyBatis支持一级缓存和二级缓存。

一级缓存

一级缓存是基于SqlSession的缓存,每个SqlSession都有自己的缓存,当SqlSession关闭时,缓存也会被清空。

二级缓存

二级缓存是基于Mapper的缓存,它可以在多个SqlSession之间共享。需要在mybatis-config.xml中启用二级缓存。

<cache-ref local="true"/>

在映射文件中启用二级缓存。

<cache/>
Mybatis与Spring集成
Spring框架简介

Spring是一个开源的企业级应用开发框架,它通过依赖注入(DI)和面向切面编程(AOP)来简化Java应用开发。Spring还提供了事务管理、数据访问抽象层、邮件发送、模板引擎等功能。

Mybatis与Spring的集成步骤

集成步骤

  1. 引入Spring和MyBatis的依赖
    在pom.xml文件中添加Spring和MyBatis的依赖。

    <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-context</artifactId>
       <version>5.3.10</version>
    </dependency>
    <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-jdbc</artifactId>
       <version>5.3.10</version>
    </dependency>
    <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-tx</artifactId>
       <version>5.3.10</version>
    </dependency>
  2. 配置数据源和事务管理器
    在Spring的配置文件中配置数据源和事务管理器。

    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
       <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
       <property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
       <property name="username" value="root"/>
       <property name="password" value="password"/>
    </bean>
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
       <property name="dataSource" ref="dataSource"/>
    </bean>
  3. 配置SqlSessionFactoryBean
    使用SqlSessionFactoryBean创建SqlSessionFactory

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
       <property name="dataSource" ref="dataSource"/>
       <property name="mapperLocations" value="classpath*:mapper/*.xml"/>
    </bean>
  4. 配置Mapper扫描
    使用MapperScannerConfigurer扫描Mapper接口。
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
       <property name="basePackage" value="com.mycompany.mapper"/>
       <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    </bean>

Mybatis与Spring的事务管理

Spring提供了声明式事务管理,可以通过@Transactional注解来管理事务。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;

    @Transactional
    public void createUser(User user) {
        userMapper.insertUser(user);
    }
}
实战项目案例解析
实战项目的需求分析

假设我们正在开发一个用户管理系统,需要实现用户信息的查询、插入、更新和删除功能。

用户表设计

用户表结构如下:

CREATE TABLE user (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    age INT
);

功能需求

  1. 查询用户:根据用户ID查询用户信息。
  2. 插入用户:插入新的用户信息。
  3. 更新用户:更新用户信息。
  4. 删除用户:删除用户信息。
实战项目的设计与实现

数据库连接

首先,创建数据库和用户表。

CREATE DATABASE mydb;
USE mydb;

CREATE TABLE user (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    age INT
);

配置文件

配置文件包括MyBatis的核心配置文件和Spring的配置文件。

MyBatis配置文件

<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
                <property name="username" value="root"/>
                <property name="password" value="password"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="com/mycompany/mapper/UserMapper.xml"/>
    </mappers>
</configuration>

Spring配置文件

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/mydb"/>
    <property name="username" value="root"/>
    <property name="password" value="password"/>
</bean>

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="mapperLocations" value="classpath*:mapper/*.xml"/>
</bean>

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.mycompany.mapper"/>
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>

映射文件

映射文件定义了SQL语句和Java对象之间的映射关系。

<mapper namespace="com.mycompany.mapper.UserMapper">
    <select id="getUserById" resultType="User">
        SELECT * FROM user WHERE id = #{id}
    </select>
    <insert id="insertUser" parameterType="User">
        INSERT INTO user (id, name, age) VALUES (#{id}, #{name}, #{age})
    </insert>
    <update id="updateUser" parameterType="User">
        UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}
    </update>
    <delete id="deleteUser" parameterType="int">
        DELETE FROM user WHERE id = #{id}
    </delete>
</mapper>

Java代码

编写Java代码来实现用户信息的查询、插入、更新和删除功能。

import org.apache.ibatis.session.SqlSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
public class UserService {
    @Autowired
    private SqlSession sqlSession;

    @Transactional
    public User getUserById(int id) {
        return sqlSession.selectOne("getUserById", id);
    }

    @Transactional
    public void insertUser(User user) {
        sqlSession.insert("insertUser", user);
    }

    @Transactional
    public void updateUser(User user) {
        sqlSession.update("updateUser", user);
    }

    @Transactional
    public void deleteUser(int id) {
        sqlSession.delete("deleteUser", id);
    }
}
实战项目中的常见问题与解决方法

问题1:SQL执行慢

原因:查询语句不够高效,或者数据库表结构设计不合理。

解决方法:优化查询语句,使用索引,或者重构数据库表结构。

问题2:MyBatis缓存失效

原因:二级缓存配置不正确,或者缓存策略选择不当。

解决方法:检查二级缓存配置,确保开启<cache>标签,并设置合适的缓存策略。

问题3:事务回滚失败

原因:事务管理器配置错误,或者事务传播行为设置不当。

解决方法:检查事务管理器配置,确保事务传播行为设置正确。

Mybatis持久层框架项目实战总结
Mybatis项目实战的要点总结
  1. 配置文件:正确配置MyBatis的核心配置文件和Spring配置文件。
  2. 映射文件:编写映射文件,定义SQL语句和Java对象之间的映射关系。
  3. Java代码:编写Java代码,通过SqlSession对象执行SQL语句。
  4. 事务管理:使用Spring的事务管理功能,确保数据的一致性。
  5. 缓存机制:合理使用MyBatis的一级缓存和二级缓存,提高查询性能。
Mybatis框架的高级功能简述

动态SQL

MyBatis支持动态SQL,可以通过标签来控制SQL语句的生成。例如,<if>标签可以用于条件判断。

<update id="updateUser" parameterType="User">
    UPDATE user
    <set>
        <if test="name != null">name = #{name},</if>
        <if test="age != null">age = #{age},</if>
    </set>
    WHERE id = #{id}
</update>

分页插件

MyBatis支持分页插件,可以通过插件来实现高效的分页查询。

public class PaginationPlugin implements Interceptor {
    @Override
    public Object intercept(Invocation invocation) throws Throwable {
        // 实现分页逻辑
    }

    @Override
    public Object plugin(Object target) {
        return Plugin.wrap(target, this);
    }

    @Override
    public void setProperties(Properties properties) {
        // 设置属性
    }
}

自动映射

MyBatis支持自动映射,可以通过<mapper>标签的autoMapping属性来启用自动映射。

<mapper namespace="com.mycompany.mapper.UserMapper" autoMapping="true">
    <!-- SQL语句 -->
</mapper>
Mybatis框架的未来发展与趋势

MyBatis框架将继续保持稳定的发展,通过不断优化性能、增加新功能来满足开发者的需求。未来,MyBatis可能会更加注重与现代开发工具和框架的集成,例如Spring Boot、Spring Data、MyBatis-Plus等。同时,MyBatis也会更加关注社区反馈,提高开发者体验。此外,MyBatis还会继续探索新的技术方向,例如云原生、微服务等,以适应不断变化的技术环境。

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消