Spring 3-Spring集成Mybatis

1 创建数据库/表

CREATE TABLE `t_user` (
  `id` int(32) NOT NULL AUTO_INCREMENT,
  `userCode` varchar(32) DEFAULT NULL,
  `userName` varchar(32) DEFAULT NULL,
  `userPassword` varchar(32) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

2.创建工程,目录,配置

src/main/java/cn.kgc/entity、mapper、service/…
src/main/resources/cn.kgc.mapper/…
src/test/java/cn.kgc.test/…

3.pom.xml

  <dependencies>
<!--    spring的依赖-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.2.5.RELEASE</version>
    </dependency>
<!--    spring事务的依赖-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>5.2.5.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.2.5.RELEASE</version>
    </dependency>
<!--    mybatis的依赖-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.1</version>
    </dependency>
<!--  mybatis集成spring的依赖-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.1</version>
    </dependency>
<!--    mysql的依赖-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.21</version>
    </dependency>
<!--连接池的依赖-->
<!--    连接池-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.12</version>
    </dependency>
<!-- lombok -->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.20</version>
      <scope>provided</scope>
    </dependency>
<!--    junit的依赖-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

介绍(摘录):

Druid(德鲁伊)
Druid是java语言最好的数据库连接池。
Druid是作为商业中间件连接池,他们的性能以及调配比开源好。

数据库自带的POOLED不好

Druid的技术特点:

  1. 数据吞吐量大
  2. 支持流式数据摄入和实时
  3. 查询灵活且快速

如果人过多访问,mybatis会炸,而有这个Druid技术就不会。

为什么会有连接池的存在?
因为建立数据库连接是一个非常耗时、耗资源的行为,
所以通过连接池预先同数据库建立一些连接,放在内存中,
应用程序需要建立数据库连接时直接到连接池中申请一个就行,
用完后再放回去,
极大的提高了数据库连接的性能问题,节省了资源和时间。

当需要访问数据库时,只需要从数据库连接池中获取空闲的数据库连接,
当程序访问数据库结束时,数据库连接会放回数据库连接池中。

连接技术在jdbc的规范之上建立完成的。

4.spring主配置文件applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
       
<!-- 1.配置数据源(利用Druid连接池)  开init方法  关close方法-->
<!--    不用写driver 连接池去管理和连接数据库   -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
          init-method="init" destroy-method="close" >
        <property name="url" value="jdbc:mysql://localhost:3306/db_spring_mybatis?characterEncoding=utf8&amp;useSSL=false&amp;serverTimezone=UTC&amp;rewriteBatchedStatements=true" />
        <property name="username" value="root" />
        <property name="password" value="zjj" />
    </bean>
  
<!--2.配置SqlSessionFactoryBean,这个类的内部会创建SqlSessionFactory对象  
下面用的是set注入-->
<!--spring 集成 mybatis 1.引入数据源(取得连接)  2.导入mybatis-config-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="configLocation" value="classpath:mybatis-config.xml" />
    </bean>

<!--3.配置 MapperFactoryBean:扫描器,
	作用会将这个包中的所有接口都执行一次getMapper(),得到每个dao对象-->
<!-- 扫mybatis  作用:生成实体类的 mybatis的实现类就不用写了  
扫描xml和mybatis持久层的接口  .getMapper就不用写了 由spring去管理 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="cn.kgc.mapper" />
    </bean>

<!-- 扫spring 4.扫描dao 注解注入-->
    <context:component-scan base-package="cn" />

</beans>

题外话:
为了使用MyBatis功能,Spring配置文件中提供了两个bean,
配置SqlSessionFactoryBean和配置 MapperFactoryBean

在之前,单独使用MyBatis的时候调用数据库接口的方式是
sqlSession.getMapper(UserMapper.class).addUser(user);
之后,我们使用MapperScannerConfigurer,让它扫描特定的包,
自动帮我们成批的创建映射器。这样一来,就能大大减少配置的工作量。

4.cn/kgc/entity/User.java

package cn.kgc.entity;

import lombok.Getter;
import lombok.Setter;

@Setter
@Getter
public class User {
    private Integer id;
    private String userCode;
    private String userName;
    private String userPassword;
}

5.cn/kgc/mapper/UserMapper.java

package cn.kgc.mapper;

import cn.kgc.entity.User;

public interface UserMapper {
    Integer addUser(User user);
}

6.resources/cn/kgc/mapper/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="cn.kgc.mapper.UserMapper">
    <insert id="addUser" parameterType="cn.kgc.entity.User">
        insert into t_user(userCode,userName,userPassword)
        values (#{userCode},#{userName},#{userPassword})
    </insert>
</mapper>

7.cn/kgc/service/UserService.java

package cn.kgc.service;

import cn.kgc.entity.User;

public interface UserService {
    Integer addUser(User user);
}

8.cn/kgc/service/UserServiceImpl.java

package cn.kgc.service;

import cn.kgc.entity.User;
import cn.kgc.mapper.UserMapper;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service(value = "userService")
public class UserServiceImpl implements UserService {
    @Resource
    private UserMapper userMapper;
    @Override
    public Integer addUser(User user) {
        return userMapper.addUser(user);
    }
}

9.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">
<configuration>
    <settings>
        <!--设置mybatis输出日志-->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
    </settings>
    <mappers>
        <mapper resource="cn/kgc/mapper/UserMapper.xml"/>
    </mappers>
</configuration>

10.test/java/cn.kgc.test/TestUserServiceImpl

    @Test
    public void testAdd(){
        ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserService userService = (UserService) ac.getBean("userService");
        User user = new User();
        user.setUserName("张三");
        user.setUserCode("100");
        user.setUserPassword("123789");
        userService.addUser(user);
        //不用提交事务 spring自动帮你
}

在这里插入图片描述
题外话:
idea配置代码模板
在这里插入图片描述

----2021.12.08

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值