spring集成mybatis

news2024/11/25 8:15:02

目录

(1)新建javaEE web项目

​(2)加入相关依赖的坐标

(3) 创建相应的包和类

(4) 配置spring和mybatis的配置文件

在resources中建mybatis-config.xml

在 resources中建spring.xml

在 resources中建db.xml

在 resources中建config.propertis

集成mybatis配置 ,导入mybatis-spring  的jar包   

Spring 结合 mybatis 插件包

在 resources中建spring-mybatis.xml

 搭建完成后测试一下


ssm(spring, springweb, mybatis)

(1)新建javaEE web项目

 

 (2)加入相关依赖的坐标

数据访问:mybatis, mysql, junit, druid, 

spring框架: spring-context, spring-jdbc, spring-aop

<!-- spring-context -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.3.2</version>
</dependency>
<!-- spring-jdbc -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.3.2</version>
</dependency>
<!--  spring-aop -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-aspects</artifactId>
    <version>5.3.2</version>
</dependency>
<!-- 阿里数据源 -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.10</version>
</dependency>
<!--  mysql-connector -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.16</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.2</version>
</dependency>
<!-- 单元测试-->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>provided</scope>
</dependency>

 (3) 创建相应的包和类

package com.ffyc.ssm.dao;

import com.ffyc.ssm.model.Admin;
import org.springframework.stereotype.Repository;

@Repository
public interface LoginDao {


    public Admin login(Admin admin);
}
package com.ffyc.ssm.model;

public class Admin {
    private int id;
    private String account;
    private String password;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getAccount() {
        return account;
    }

    public void setAccount(String account) {
        this.account = account;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}
package com.ffyc.ssm.service;

import com.ffyc.ssm.dao.LoginDao;
import com.ffyc.ssm.model.Admin;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Transactional
@Service(value = "loginService")
public class LoginService {

    @Autowired
    LoginDao loginDao;
    public Admin login(Admin admin){
       Admin a = loginDao.login(admin);
        return a;
    }
}
<?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="com.ffyc.ssm.dao.LoginDao">


    <select id="login" resultType="com.ffyc.ssm.model.Admin">
        select * from admin where account = #{account} and password = #{password}
    </select>
</mapper>

(4) 配置spring和mybatis的配置文件

在resources中建mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--
这是mybatis核心配置文件
-->

    <settings>
         <!--启用日志功能,在运行时,可以将实际执行的sql细节打印到控制台-->
        <setting name="logImpl" value="STDOUT_LOGGING"/>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

    <!-- 配置类型简称   -->
    <typeAliases>
    <!-- <typeAlias type="com.ffyc.mybatispro.model.Admin" alias="Admin"></typeAlias>-->
    <package name="com.ffyc.ssm.model"/>
    </typeAliases>



</configuration>

在 resources中建spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">

    <!--  开启注解扫描  -->
    <context:component-scan base-package="com.ffyc.ssm"> </context:component-scan>
    <!--  开启自动代理  -->
    <aop:aspectj-autoproxy />
    <!--  导入数据库连接,以及事务管理配置   -->
    <import resource="classpath:db.xml"></import>

</beans>

在 resources中建db.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"
       xmlns:tx="http://www.springframework.org/schema/tx"
       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
      http://www.springframework.org/schema/tx
      http://www.springframework.org/schema/tx/spring-tx.xsd">
    <!--用来配置数据库相关的东西-->
    <!--导入属性文件-->
    <context:property-placeholder location="classpath:config.properties"></context:property-placeholder>
    <!--管理数据源对象-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${classDriverName}"></property>
        <property name="url" value="${url}"></property>
        <property name="username" value="${uname}"></property>
        <property name="password" value="${pwd}"></property>
        <property name="initialSize" value="5"></property>
        <property name="maxActive" value="20"></property>
    </bean>

    <!-- 配置 spring 事务管理类, 并注入数据源 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <!-- 开启注解事务管理 -->
    <tx:annotation-driven transaction-manager="transactionManager"/>

</beans>

在 resources中建config.propertis

classDriverName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/ssmdb?serverTimezone=Asia/Shanghai
uname=root
pwd=xiaosi

集成mybatis配置 ,导入mybatis-spring  的jar包   

Spring 结合 mybatis 插件

< dependency >
< groupId >org.mybatis</ groupId >
< artifactId >mybatis-spring</ artifactId >
< version >1.3.1</ version >
</ dependency >

在 resources中建spring-mybatis.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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">



    <!--  导入数据库连接,以及事务管理配置   -->
    <import resource="classpath:db.xml"></import>



    <!--    让spring框架配置 sqlSessionFactory-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--   注入数据源     -->
        <property name="dataSource" ref="dataSource"></property>
        <!--   配置mybatis文件     -->
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
        <!--   扫描sql映射文件     -->
        <property name="mapperLocations" value="classpath:mappers/*Mapper.xml">
        </property>
    </bean>


    <!--  让spring框架指定生成接口代理-->
    <bean id="mapperFactory" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.ffyc.ssm.dao"></property>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory">
        </property>
    </bean>
</beans>

 搭建完成后测试一下

package com.ffyc.ssm.test;

import com.ffyc.ssm.model.Admin;
import com.ffyc.ssm.service.LoginService;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Test1 {
    @Test
    public void test(){
        ClassPathXmlApplicationContext app = new ClassPathXmlApplicationContext("spring.xml");
        LoginService loginService = app.getBean("loginService", LoginService.class);
        Admin admin = new Admin();
        admin.setAccount("xiaosi");
        admin.setPassword("999");
        Admin login = loginService.login(admin);
        System.out.println(login);
    }
}

测试结果: 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/584873.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MyBatis参数传递(提供ParamNameResolver类来进行参数封装)源码分析

MyBatis接口方法中可以接收各种各样的参数&#xff0c;MyBatis底层对于这些参数进行不同的封装处理方式。 单个参数&#xff1a;实体类、Map集合、Collection、List、Array以及其他类型。 多个参数&#xff1a;Param注解定义的名称要与sql语句中参数占位符中的名称相同。 这里…

RDD缓存有哪些特点?

RDD之间进行相互迭代计算(Transformation的转换)&#xff0c;当执行开启后&#xff0c;新RDD的生成&#xff0c;代表老RDD的消失。RDD的数据是过程数据&#xff0c;只在处理的过程中存在&#xff0c;一旦处理完成&#xff0c;就不见了。这个特性可以最大化的利用资源&#xff0…

【CSAPP】Binarybomb 实验(phase_1-6+secret_phase)

Binarybomb 实验&#xff08;phase_1-6secret_phase&#xff09; 实验内容 一个“binary bombs”&#xff08;二进制炸弹&#xff0c;下文将简称为炸弹&#xff09;是一个Linux可执行C程序&#xff0c;包含了7个阶段&#xff08;phase1~phase6和一个隐藏阶段&#xff09;。炸…

【CANoe示例分析】0002_SOMEIPDemo

该工程由Vector官方提供,作为仿真SOME/IP节点的示例。Demo中介绍了两种仿真SOME/IP节点的方法,一种是基于arxml数据库的仿真,另一种是没有数据库(arxml、fibex)的仿真。 无论是哪种形式的仿真,如果想要通过CAPL程序接收或者发送SOME/IP信息,都需要添加交互 层的信息,这…

不懂就问:年薪百万的程序员是怎么做到的?

很多人对程序员的第一反应就是“工资高”。 从行业平均薪酬来看&#xff0c;“程序员”相关专业的收入确实更高一点。 但是&#xff0c;“程序员”内部薪资却存在着很大的差异&#xff0c;多数人月薪在1-2万&#xff0c;一线城市可以达到3-5万&#xff0c;而顶级程序员&#…

探索Java面向对象编程的奇妙世界(六)

⭐ 多态(polymorphism)⭐ 对象的转型(casting)⭐ 抽象类⭐ 接口 interface ⭐ 多态(polymorphism) 多态指的是同一个方法调用&#xff0c;由于对象不同可能会有不同的行为。现实生活中&#xff0c;同一个方法&#xff0c;具体实现会完全不同。 比如&#xff1a;同样是调用人“吃…

回归方程的显著性检验——F检验

回归方程的显著性检验——F检验 9.2 回归方程的显著性检验 (edu-edu.com.cn) 概念 记号&#xff1a; y i y_i yi​&#xff1a;真实值&#xff0c;观测值 y ˉ \bar{y} yˉ​&#xff1a;真实值的平均值 y ^ \hat{y} y^​&#xff1a;估计值&#xff0c;预测值 几个差&#x…

Activiti、Flowable与CCFlow的选型对比

前言 工作流是什么&#xff0c;这个问题我们就不在此进行解释了&#xff0c;这里我们主要讲解一下Activiti、Flowable和CCFlow三款工作流的对比&#xff0c;为大家选型时做一些参考。 Activiti和Flowable大家可能多少都听说过&#xff0c;都是国外的工作流引擎&#xff0c;都…

Axure教程—单色面积图(中继器)

本文将教大家如何用AXURE制作单色面积图 一、效果介绍 如图&#xff1a; 预览地址&#xff1a;https://icg26y.axshare.com/ 下载地址&#xff1a;https://download.csdn.net/download/weixin_43516258/87837919?spm1001.2014.3001.5503 二、功能介绍 简单填写中继器内容即…

软件设计师总结-含括学习方法和学习过程,可参考

目录 考前备战宏观    心路历程-感受    学习阶段-计划的安排 微观一、课本和视频的学习    本阶段的目的:    侧重点    涉及的学习方法&#xff08;最后有如何使用这些方法&#xff09;    学习结果 二、32小时通关辅助前面的知识点    本阶段的…

提升企业管理效率的利器——ADManager Plus

在当今信息时代&#xff0c;企业的规模和复杂性不断增长&#xff0c;管理各个方面变得愈发具有挑战性。而在企业管理中&#xff0c;活跃目录&#xff08;Active Directory&#xff09;起着至关重要的作用。它是一种用于组织内部的用户、计算机、组和其他对象进行集中管理的目录…

javascript中的this与函数讲解

前言 javascript中没有块级作用域&#xff08;es6以前&#xff09;&#xff0c;javascript中作用域分为函数作用域和全局作用域。并且&#xff0c;大家可以认为全局作用域其实就是Window函数的函数作用域&#xff0c;我们编写的js代码&#xff0c;都存放在Window函数内&#x…

Hack The Box-Redeemer关卡

TASK 1 任务 1 Which TCP port is open on the machine? 计算机上打开了哪个 TCP 端口&#xff1f; 6379TASK 2 任务 2 Which service is running on the port that is open on the machine? 计算机上打开的端口上运行哪个服务&#xff1f; redisTASK 3 任务 3 What typ…

java学习——java学习进度一String类1(学习记录——供回溯)

String 分割字符串 split( ) String s "1,2,3,4"; //未使用split分割前 System.out.println(s.length());//使用split分割后 String[] ssplit s.split(","); System.out.println(ssplit.length);split( , ) //两个参数都有的时候&#xff0c;第一个为用…

视频编辑软件:迅捷视频工具箱

这是一款功能强大、易于使用的视频编辑工具&#xff0c;支持视频剪辑、视频转换、音频转换、视频压缩、视频水印、字幕贴图等实用功能&#xff0c;可以帮助你制作出高质量的视频作品。&#xff08;传送门&#xff1a;https://www.xunjiepdf.com/xjspgjx&#xff09; 功能简介 …

Linux:CentOS:进程查看和控制

查看 ps 查看静态的进程统计信息top查看动态的进程排名信息pgrep根据特定条件查询进程 PID 信息pstree以树形结构列出进程信息 S ---休眠 R ---运行 Z ---僵死&#xff08;应予以手动终止&#xff09; < ---高优先级 N ---低优先级 …

FrameLayout+LinearLayout实现首页底部菜单

1.布局样式 2.main.xml代码 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_par…

Socket(二)

文章目录 1. Socket地址2. 代理服务器3. 获取Socket的信息4. 关闭还是连接5. toString() 1. Socket地址 SocketAddress类表示一个连接端点&#xff0c;这个一个空的抽象类&#xff0c;除了一个默认构造函数外&#xff0c;没有其他方法。当前只支持TCP/IP Socket&#xff0c;实…

在云服务器上部署简单的聊天机器人网站(源1.0接口版)

诸神缄默不语-个人CSDN博文目录 又不是不能用.jpg http://47.113.197.198:8000/chat 集成代码可参考&#xff1a;花月与剑/scholar_ease 之所以先用源1.0&#xff0c;一是因为我API都申请了&#xff0c;不用白不用&#xff1b;二是因为源1.0可以直接用国内网络连接&#xf…

终极AI工具包【第一章 如何学习ChatGPT(基础知识)】

第1章&#xff1a;如何学习ChatGPT&#xff08;基础知识&#xff09; 1、什么是ChatGPT ChatGPT是OpenAI开发的一种人工智能&#xff08;AI&#xff09;语言模型。它是在一个称为GPT&#xff08;生成预训练变压器&#xff09;的架构下构建的&#xff0c;目的是理解和生成人类语…