Fork me on GitHub

SSM整合一———单独Mybatis

SSM整合一———单独Mybatis

1.SSM框架

Spring:Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。 简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

SpringMVC: Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

Mybatis: MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。MyBatis是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)MyBatis 消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML或注解用于配置和原始映射,将接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

整合大致如图所示:

2.单独使用Mybatis

功能:简单的向数据库插入数据,环境:jdk1.8、mysql8、Tomcat8.5

项目结构图:

Mybatis流程:mybatis-config.xml中查找sql映射文件(net/zzqd/ssm/mapper/CustomerMapper.xml),然后再sql映射文件中读取sql接口(net.zzqd.ssm.dao.CustomerMapper),进而执行sql语句。

2.1导入jar包

在这里插入图片描述

2.1.1日志文件(log44j.properties)放在src目录下
1
2
3
4
5
6
7
8
9
log4j.rootLogger=DEBUG, Console
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
2.1.2数据库配置文件(database.properties)
1
2
3
4
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/ssm?useSSL=false&serverTimezone=UTC
jdbc.username=root
jdbc.password=root
2.2建立数据库和表
2.2.1数据库

在这里插入图片描述

2.2.2表
1
2
3
4
5
6
7
create table t_customer(
id int primary key auto_increment,
name varchar(20),
gender char(1),
telephone varchar(20),
address varchar(50)
);
2.3建立实体类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package net.zzqd.ssm.domain;

public class Customer {
private Integer id;
private String name;
private String gender;
private String telephone;
private String address;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getTelephone() {
return telephone;
}
public void setTelephone(String telephone) {
this.telephone = telephone;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}

}
2.4建立Mapper接口
1
2
3
4
5
6
7
8
9
10
package net.zzqd.ssm.dao;

import net.zzqd.ssm.domain.Customer;

public interface CustomerMapper {
/**
* 添加用户
*/
public void saveCustomer(Customer customer);
}
2.5建立sql映射文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?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="net.zzqd.ssm.dao.CustomerMapper">
<!-- 该文件编写mybatis中mapper接口里面的方法 提供对应的sql语句-->
<!-- 添加用户 -->
<!-- parameterType是生成的domain类型 -->
<insert id="saveCustomer" parameterType="net.zzqd.ssm.domain.Customer">
insert into ssm.t_customer
(
name,
gender,
telephone,
address
)
values
(
#{name},
#{gender},
#{telephone},
#{address}
)

</insert>
</mapper>
2.6建立mybatis-config.xml文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?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>

<!-- 引入数据源 -->
<properties resource="database.properties"></properties>
<!-- 定义别名 -->
<typeAliases>
<!-- <typeAlias type="net.zzqd.mybatis.pojo.Shop" alias="Shop"/> -->
<!-- pojo下类多的话,可以扫描包 -->
<package name="net.zzqd.ssm.domain.Customer"/>
</typeAliases>
<!-- 定义数据源 -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
<!-- <environment id="test"></environment> -->
<!-- <environment id="production"></environment> -->
</environments>
<!-- 定义映射文件 1.定义xml2.定义包-->
<mappers>
<!-- <mapper resource="net/zzqd/mybatis/mapper/ShopMapper.xml"/> -->
<mapper resource="net/zzqd/ssm/mapper/CustomerMapper.xml"/>
</mappers>
</configuration>
2.7编写测试类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package net.zzqd.ssm.test;

import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import net.zzqd.ssm.dao.CustomerMapper;
import net.zzqd.ssm.domain.Customer;

public class MybatisTest {

@Test
public void test() throws Exception
{
//1创建sqlSessionFactoryBuilder
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//加载Mapping.xml文件
InputStream in = Resources.getResourceAsStream("mybatis-config.xml");

//2创建sqlSessionFactory
SqlSessionFactory factory = builder.build(in);

//3打开SqlSession
SqlSession sqlSession = factory.openSession();

//4获取Mapper接口的对象
CustomerMapper customerMapper = sqlSession.getMapper(CustomerMapper.class);

//5操作
Customer customer = new Customer();
customer.setName("竹枝");
customer.setGender("男");
customer.setTelephone("18888888888");
customer.setAddress("郑州");
customerMapper.saveCustomer(customer);

//6提交事务
sqlSession.commit();

//7关闭
sqlSession.close();
}
}