SSM小项目(会议管理系统)二整合mybatis(图解超详细)

这是上一篇博客地址:https://blog.csdn.net/qq_41115379/article/details/114269167
这是下一篇博客:https://blog.csdn.net/qq_41115379/article/details/114292502
开始整合Mybatis
这里了解一点mybatis的作用:https://zhidao.baidu.com/question/245416155794786084.html
首先在pom.xml中加入依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>coolmeeting</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>
    <dependencies>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.7.RELEASE</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.23</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.20</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.5</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.5</version>
        </dependency>
    </dependencies>
</project>

再写数据库的配置文件 db.properties(jdbc:mysql:///是简写)

db.username=root
db.password=admin
db.url=jdbc:mysql:///meeting?serverTimezone=GMT%2B8

再修改applicationContext.xml 创建三个bean,分别是
DruidDateSource :是作为数据库连接池的:druid的意义https://www.cnblogs.com/Jeely/p/12364571.html
SqlSessionFactoryBean 作用:https://blog.csdn.net/weixin_43226394/article/details/84961647
和MapperScannerConfigurer 是用来映射扫描的

<?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">
    <context:component-scan base-package="org.javaboy.meeting" use-default-filters="true">
        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>
    <context:property-placeholder location="classpath:db.properties"/>
    <bean class="com.alibaba.druid.pool.DruidDataSource" id="dataSource">
        <property name="username" value="${db.username}"/>
        <property name="password" value="${db.password}"/>
        <property name="url" value="${db.url}"/>
    </bean>

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

    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer" id="mapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean"/>
        <property name="basePackage" value="org.javaboy.meeting.mapper"/>
    </bean>
</beans>

这里有几个需要注意的细节,首先是typeAliasesPackage 这边,需要创建一个model包
在这里插入图片描述
其次是,classpath:org/javaboy/meeting/mapper/*.xml 这里会标红,主要是因为现在这边没有xml文件,所以问题不大
最后就是关于MapperScannerConfigurer 这边,
因为在maven这边,一般是建议xml放在resources这边,但是由于这样找起来不方便,所以修改一下放在mapper下面
这就因此需要修改一下 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>coolmeeting</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>
    <dependencies>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.7.RELEASE</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.23</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.20</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.5</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.5</version>
        </dependency>
    </dependencies>
    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>
    </build>
</project>

当然为了对应前面的,需要创建对应的meeting数据库,然后导入对应的sql语句
使用Navicat来连接并且新建数据库
在这里插入图片描述
在这里插入图片描述
这样就都有了,首先先测试一下这个数据库能不能连上去
可以
在这里插入图片描述
再开始测试刚刚写的这些东西
首先在model里面创建Department

package org.javaboy.meeting.model;

public class Department {
    
    
    private Integer departmentid;
    private String departmentname;
    public Integer getDepartmentid() {
    
    
        return departmentid;
    }

    public void setDepartmentid(Integer departmentid) {
    
    
        this.departmentid = departmentid;
    }

    public String getDepartmentname() {
    
    
        return departmentname;
    }

    public void setDepartmentname(String departmentname) {
    
    
        this.departmentname = departmentname;
    }
    @Override
public String toString() {
    
    
    return "Department{" +
            "departmentid=" + departmentid +
            ", departmentname='" + departmentname + '\'' +
            '}';
}
}

并在mapper里面创建DepartmentMapper接口 以及service上创建DepartmentService
这两个都是创建好,但是没用到
最后再controller这边创建DepartmentController
再经过“无限套娃”,就需要每个类都再写一下了
DepartmentController

package org.javaboy.meeting.controller;

import org.javaboy.meeting.model.Department;
import org.javaboy.meeting.service.DepartmentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class DepartmentController {
    
    
    //先注入service
    @Autowired
    DepartmentService departmentService;
    @GetMapping("/dep")
    public void getDepById(Integer id){
    
    
        //也就是直接调用service这个方法,所以需要去serveice那边创建这个方法
        Department dep=departmentService.getDepById(id);
        System.out.println("dep= "+dep);
    }
}

DepartmentMapper

package org.javaboy.meeting.mapper;

import org.javaboy.meeting.model.Department;

public interface DepartmentMapper {
    
    

    Department getDepById(Integer id);
    //创建到这里之后,就需要用xml文件了

}

DepartmentService

package org.javaboy.meeting.service;

import org.javaboy.meeting.mapper.DepartmentMapper;
import org.javaboy.meeting.model.Department;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class DepartmentService {
    
    
    //这里就需要调用mapper
    @Autowired
    DepartmentMapper departmentMapper;
    public Department getDepById(Integer id) {
    
    
       //然后这里也是直接调用这个方法,而且这里是需要return的
        return departmentMapper.getDepById(id);
    }
}

然后需要在mapper包下创建DepartmentMapper.xml
这边是最后有模板,直接new一个mapper,模板创建方式:https://blog.csdn.net/qq_41115379/article/details/114276407
在这里插入图片描述

<?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="org.javaboy.meeting.mapper.DepartmentMapper">
    <select id="getDepById" resultType="org.javaboy.meeting.model.Department">
        select * from department where departmentid=#{id};
    </select>

</mapper>

然后启动一下试试看
可能会报错,首先把乱码问题给解决了
在这里插入图片描述
https://blog.csdn.net/qq_41115379/article/details/114292015解决方法在这。
然后是这个问题:Can’t load AMD 64-bit .dll on a IA 32-bit platform
因为我的版本是14,
在这里插入图片描述
所以我改成了这个试试看
在这里插入图片描述
https://blog.csdn.net/qq_41115379/article/details/114291989解决方法在这
还有这个问题:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mapperScannerConfigurer' defined in class path resource [applicationContext.xml]: Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: org/springframework/dao/support/DaoSupport

解决方法:https://blog.csdn.net/qq_41115379/article/details/114292036
增加这个依赖

  <dependency>
		    <groupId>org.springframework</groupId>
		    <artifactId>spring-tx</artifactId>
		    <version>3.0.5.RELEASE</version>
		</dependency>
java.lang.NoClassDefFoundError: org/springframework/jdbc/datasource/TransactionAwareDataSourceProxy

解决方法:https://blog.csdn.net/qq_41115379/article/details/114292053
增加这个依赖

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>4.2.5.RELEASE</version>
</dependency>

好了
然后在浏览器中输入:http://localhost:8080/dep?id=1
idea这边结果如下:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41115379/article/details/114292192