SSM学习笔记1——单独使用MyBatis框架

整合思路分析

在这里插入图片描述

  • 单独使用 Mybatis
  • MyBatis 整合 Spring - 有 Mapper 实现类
  • MyBatis 整合 Spring - 没有 Mapper 实现类
  • MyBatis 整合 Spring - Mapper 接口扫描
  • MyBatis 整合 Spring -整合 JDBC 事务
  • 整合 SpringMVC

01. 单独使用MyBatis框架

1.1.导入必须包

MyBatis下载方式:
https://jingyan.baidu.com/article/19020a0a773e5c529d284200.html

下载后,
在这里插入图片描述
在这里插入图片描述
选中的jar包,放在WebRoot–>WEB-INF–>lib下

再导入MySQL的驱动:
在这里插入图片描述
链接:https://pan.baidu.com/s/1cXSjclLwPPeNCFXdr-D7Jg
提取码:jxmg

刚刚导入的有 log4j,所以要有一个log4j的配置文件:
项目–>右键new–>Source Folder
新建一个叫 config 的目录(和src同级别的)
存放log4j的配置文件:log4j.properties(固定的,用来输出日志)

### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=c\:mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### set log levels - for more verbose logging change 'info' to 'debug' ###

log4j.rootLogger=debug, stdout

1.2.建立数据库和表

在这里插入图片描述
这里用的是SQLyog(数据库相关请看之前的文章)

创建一个t_customer表:

CREATE TABLE t_customer(
id INT PRIMARY KEY AUTO_INCREMENT, 
NAME VARCHAR(20), gender CHAR(1), 
telephone VARCHAR(20), 
address VARCHAR(50)
);
1.3.建立实体类(Javabean)

项目–>src–>new一个包:com.domain
在该包下new一个class文件:Customer.java
(包名自行更换,以自己建的为准,get和set方法,用编译器生成(source–>Generate Getters and Setters))

package cn.sm1234.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;
}
}
1.4.建立 Mapper 接口

新建一个包:com.dao
在包里新建class文件:CustomerMapper.java

package cn.sm1234.dao;
import cn.sm1234.domain.Customer;
public interface CustomerMapper {
/**
* 添加客户
*/
public void saveCustomer(Customer customer);
}
1.5.建立 sql 映射文件

saveCustomer这个方法对应的语句在这里写
在config下新建一个包:mapper
在该包下放映射文件:
CustomerMapper.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">
<!-- 该文件编写mybatis中的mapper接口里面的方法提供对应的sql语句 -->
<mapper namespace="cn.sm1234.dao.CustomerMapper">

	<!-- 添加客户 -->
	<insert id="saveCustomer" parameterType="cn.sm1234.domain.Customer">
		INSERT INTO ssm.t_customer 
			(
			NAME, 
			gender, 
			telephone, 
			address
			)
			VALUES
			( 
			#{name}, 
			#{gender}, 
			#{telephone}, 
			#{address}
			)
	</insert>

</mapper>

(注意:方法的名字要跟id相同;namespace要跟mapper的全名相同)
在SQLyog里,对着表右键–>粘贴SQL语句–>插入到表名,就会得到insert语句:


INSERT INTO `ssm`.`t_customer` 
	(`id`, 
	`NAME`, 
	`gender`, 
	`telephone`, 
	`address`
	)
	VALUES
	('id', 
	'NAME', 
	'gender', 
	'telephone', 
	'address'
	);

VALUES里面的,用在Javabean里面创建的变量来代替,就变成了上面带#{}的那种形式

1.6.建立 sqlMapConfig.xml 文件

sqlMapConfig.xml文件,放在config目录下,内容基本固定的,用模板就行

<?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>
	<!-- 和spring整合后 environments配置将废除 -->
	<environments default="development">
		<environment id="development">
			<!-- 使用jdbc事务管理 -->
			<transactionManager type="JDBC" />
			<!-- 数据库连接池 -->
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url"
					value="jdbc:mysql://localhost:3306/ssm?characterEncoding=utf-8" />
				<property name="username" value="root" />
				<property name="password" value="123456" />
			</dataSource>
		</environment>
	</environments>
	
	<!-- 查找sql映射文件 -->
	<mappers>
		<mapper resource="mapper/CustomerMapper.xml"/>
	</mappers>
</configuration>

修改数据库的连接:

value="jdbc:mysql://localhost:3306/ssm?characterEncoding=utf-8" />

这一句,ssm这个位置要写的,视要连接的数据库名字而定

查找sql映射文件的路径要自己改

1.7.编写测试类

src下新建包:com.test
包里新建class:MyBatisTest.java

package cn.sm1234.test;

import java.io.IOException;
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 cn.sm1234.dao.CustomerMapper;
import cn.sm1234.domain.Customer;

public class MyBatisTest {

	@Test
	public void test() throws Exception{
		//1.创建SqlSessionFactoryBuilder
		SqlSessionFactoryBuilder builer = new SqlSessionFactoryBuilder();
		//加载sqlMapConfig.xml文件
		InputStream is = Resources.getResourceAsStream("sqlMapConfig.xml");
		
		//2.创建sqlSessionFactory
		SqlSessionFactory factory = builer.build(is);
		
		//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("020-3333333");
		customer.setAddress("广州天河城广场");
		
		customerMapper.saveCustomer(customer);
		
		//6.提交事务
		sqlSession.commit();
		
		//7.关闭资源
		sqlSession.close();
	}
}

run as JUnit Test,log4j会打印日志,去数据库看已经插入数据了:
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值