这是上一篇博客地址: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这边结果如下: