当前,大部分的Java互联网项目都是用SSM
框架,即SpringMVC
+ Spring
+ MyBatis
。SpringMVC用于拦截前端请求,Mybatis用于访问数据库,Spring IoC
控制反转用于装备bean,Spring AOP
可用于处理数据库事务。
前期已经介绍了不少Spring
、Mybatis
框架的内容,此篇博客将进行Spring
-Mybatis
的整合。闲话少叙,直接开始吧!
1、创建一个普通Java Web项目
由于需要创建Java Web项目,请先配置好JDK,Tomcat环境,还没有配置的可以去翻翻我之前的博客,都有介绍,我这里配置的的JDK1.8+Tomcat9。
2、复制Jar包依赖到项目lib文件夹
①、在项目web/WEB-INF目录下创建lib文件夹
②、复制Spring的jar包到项目lib文件夹
Spring框架支持包下载地址:https://repo.spring.io/release/org/springframework/spring/
此处少导入了spring-jdbc,否则会报错Property 'dataSource' threw exception; nested exception is java.lang.NoClassDefFoundError: org/sprin
③、复制MySQL驱动到项目lib文件夹
MySQL官网下载地址:https://dev.mysql.com/downloads/connector/j/
④、复制DBCP数据库连接池jar包项目lib文件夹
⑤、复制Mybatis的Jar到项目lib文件夹
⑥、复制Mybatis-spring连接包到lib文件夹
maven下载地址:https://mvnrepository.com/artifact/org.mybatis/mybatis-spring/2.0.3
⑦、复制测试Junit的包到项目lib文件夹
3、创建MySQL数据库
# 创建spring_mybatis_demo数据库
DROP DATABASE IF EXISTS `spring_mybatis_demo`;
CREATE DATABASE `spring_mybatis_demo`;
USE `spring_mybatis_demo`;
# 创建t_user表
CREATE TABLE `t_user`(
`id` int PRIMARY KEY auto_increment,
`username` VARCHAR(32),
`password` VARCHAR(18),
`gender` VARCHAR(1),
`info` VARCHAR(200)
);
# 插入两条测试数据
INSERT INTO `t_user`(`username`,`password`,`gender`,`info`)
VALUES('hestyle_1','123456','男','123'),('hestyle_2','654321','男','456');
4、创建配置文件
①、创建Spring的配置文件applicationContext.xml
此处由于笔误错写为application-context.xml
,部分图片没有更正,请一律更新为applicationContext.xml
。
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd ">
<!-- 1.配置数据库,dbcp数据库连接池 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
<!-- 访问数据库url,spring_mybatis_demo是前面创建的数据库-->
<property name="url" value="jdbc:mysql://localhost:3306/spring_mybatis_demo"/>
<!-- 访问数据库的账号、密码-->
<property name="username" value="root"/>
<property name="password" value="123456"/>
<!-- 最大连接 -->
<property name="maxActive" value="10"/>
<!--最大空闲数 -->
<property name="maxIdle" value="5"/>
</bean>
<!-- 2.配置会话工厂-->
<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:SqlMapConfig.xml"/>
</bean>
<!-- 3.批量创建mapper的bean对象
内部会扫描指定包下的mapper,创建代理对象,名字就是类名,头字母改小写
-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="cn.hestyle.demo.mapper"/>
<property name="sqlSessionFactoryBeanName" value="sessionFactory"/>
</bean>
</beans>
②、创建Mybatis全局配置文件SqlMapConfig.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>
<!--告诉mybatis映射文件所在包路径-->
<mappers>
<package name="cn.hestyle.demo.mapper"></package>
</mappers>
</configuration>
③、创建log4j日志配置文件log4j.properties
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
5、编写Java文件
①、编写User实体类
package cn.hestyle.demo.entity;
import java.io.Serializable;
/**
* description: User实体类
*
* @author hestyle
* @version 1.0
* @className Spring_Mybatis_Demo->User
* @date 2020-01-27 14:20
**/
public class User implements Serializable {
private Integer id;
private String username;
private String password;
private String gender;
private String info;
public User() {
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getInfo() {
return info;
}
public void setInfo(String info) {
this.info = info;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", gender='" + gender + '\'' +
", info='" + info + '\'' +
'}';
}
}
②、编写UserMapper接口类
package cn.hestyle.demo.mapper;
import cn.hestyle.demo.entity.User;
import java.util.List;
/**
* description: UserMapper接口类,作用相当于IUserDao
*
* @author hestyle
* @version 1.0
* @className Spring_Mybatis_Demo->UserMapper
* @date 2020-01-27 14:24
**/
public interface UserMapper {
/**
* 保存一个user对象
* @param user 待保存的user对象
* @return 受影响的行数
*/
public Integer save(User user);
/**
* 通过id删除user
* @param id user id
* @return 受影响的行数
*/
public Integer deleteById(Integer id);
/**
* 更新user对象
* @param user 待更新user对象
* @return 受影响的行数
*/
public Integer update(User user);
/**
* 通过id查找user
* @param id user id
* @return 查到了user对象
*/
public User findById(Integer id);
/**
* 查找所有的user
* @return user list集合
*/
public List<User> findAll();
}
③、编写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.hestyle.demo.mapper.UserMapper" >
<!--
保存一个user对象 public Integer save(User user);
-->
<insert id="save" keyProperty="id" useGeneratedKeys="true" parameterType="cn.hestyle.demo.entity.User" >
INSERT INTO `t_user` (
username, password, gender, info
) VALUES (
#{username}, #{password}, #{gender},#{info}
)
</insert>
<!--
通过id删除user public Integer deleteById(Integer id);
-->
<delete id="deleteById" parameterType="java.lang.Integer" >
DELETE FROM `t_user`
where id = #{id}
</delete>
<!--
更新user对象 public Integer update(User user);
-->
<update id="update" parameterType="cn.hestyle.demo.entity.User" >
UPDATE `t_user`
SET
username = #{username},
password = #{password},
gender = #{gender},
info = #{info}
WHERE id = #{id}
</update>
<!--
通过id查找user public User findById(Integer id);
-->
<select id="findById" resultType="cn.hestyle.demo.entity.User" >
SELECT id,username,password,gender,info
FROM `t_user`
WHERE id = #{id}
</select>
<!--
查找所有的user public List<User> findAll();
-->
<select id="findAll" resultType="cn.hestyle.demo.entity.User" >
SELECT id,username,password,gender,info
FROM `t_user`
</select>
</mapper>
6、编写测试类
package cn.hestyle.demo.test;
import cn.hestyle.demo.entity.User;
import cn.hestyle.demo.mapper.UserMapper;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.util.List;
/**
* description: UserMapper测试
*
* @author hestyle
* @version 1.0
* @className Spring_Mybatis_Demo->UserMapperTest
* @date 2020-01-27 14:46
**/
public class UserMapperTest {
private static ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
private static UserMapper userMapper = (UserMapper) context.getBean("userMapper");
@Test
public void testSave() {
User user = new User();
user.setUsername("hestyle_save");
user.setPassword("123");
user.setGender("男");
user.setInfo("hhhhhh");
//保存user
userMapper.save(user);
//由于数据库配置了id自增长,并且id配置了返回id,所以user保存后是有id属性的
System.err.println(user);
}
@Test
public void testFindAll() {
List<User> userList = userMapper.findAll();
for (User user : userList) {
System.err.println(user);
}
}
}
执行testSave
方法,控制台输出:
执行testFindAll
方法,控制台输出:
以上就是Spring
框架与Mybatis
框架整合的主要内容,要是喜欢的话可以点个赞哟~
项目源码地址:
地址一:https://pan.baidu.com/s/1gCn8dO1giV7CFbtH9_4Yow 提取码: r6cv
地址二:https://pan.baidu.com/s/111-DY0d58FtlN0TAI0CgGQ 提取码: tzry
地址三:https://pan.baidu.com/s/1Rzm2cxmAi9eiq9jtYGDDMw 提取码: bqtx
Spring框架之创建第一个项目(IDEA)
Spring框架之Bean装配(实例化)与作用域
Spring框架之注解注入
Mybatis框架之快速入门(别再翻了,此篇博客就够了)
Mybatis框架之关联查询(一对多、多对多)(附Demo:用户和订单)
Mybatis框架之延时加载与查询缓存