1、新建maven项目
2、在pom.xml文件中导入相关依赖
<!-- mybatis驱动 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<!--数据库连接驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.10</version>
</dependency>
<!-- 单元测试驱动 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
完整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">
<parent>
<artifactId>javaee19-2</artifactId>
<groupId>com.hxci</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>mybatis</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<!-- mybatis驱动 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<!--数据库连接驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.10</version>
</dependency>
<!-- 单元测试驱动 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
3、创建数据库
-- --------------------------------------------------------
-- 主机 :127.0.0.1
-- 服务器版本 :5.0.67-community-log - MySQL Community Edition (GPL)
-- 服务器操作系统 :Win32
-- HeidiSQL 版本 :7.0.0.4278
-- 创建 :2022-03-30 11:23:13
-- --------------------------------------------------------
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET NAMES utf8 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
-- 导出 mybatis03 的数据库结构
DROP DATABASE IF EXISTS `mybatis03`;
CREATE DATABASE IF NOT EXISTS `mybatis03` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `mybatis03`;
-- 导出 表 mybatis03.customer 结构
DROP TABLE IF EXISTS `customer`;
CREATE TABLE IF NOT EXISTS `customer` (
`id` int(10) NOT NULL auto_increment,
`username` varchar(50) NOT NULL,
`jobs` varchar(50) NOT NULL,
`phone` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8;
-- 正在导出表 mybatis03.customer 的数据: ~6 rows ((大约))
DELETE FROM `customer`;
/*!40000 ALTER TABLE `customer` DISABLE KEYS */;
INSERT INTO `customer` (`id`, `username`, `jobs`, `phone`) VALUES
(23, '张三', 'java', '1232432'),
(24, '小母牛', 'java', '1232432'),
(25, '小明', 'java', '1232432'),
(26, '李敏', 'java', '1232432'),
(27, '吴芳', 'java', '1232432'),
(28, '准时空', 'java', '1232432');
/*!40000 ALTER TABLE `customer` ENABLE KEYS */;
-- 导出 表 mybatis03.student 结构
DROP TABLE IF EXISTS `student`;
CREATE TABLE IF NOT EXISTS `student` (
`id` int(10) NOT NULL auto_increment,
`username` varchar(50) default NULL,
`age` varchar(50) default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
-- 正在导出表 mybatis03.student 的数据: ~5 rows ((大约))
DELETE FROM `student`;
/*!40000 ALTER TABLE `student` DISABLE KEYS */;
INSERT INTO `student` (`id`, `username`, `age`) VALUES
(1, '李华', '15'),
(2, '李华', '15'),
(3, '李华', '15'),
(4, '李华', '15'),
(5, '李华', '15');
/*!40000 ALTER TABLE `student` ENABLE KEYS */;
/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */;
/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
4、创建实体类
Customer实体类代码
package com.pojo;
public class Customer {
private String id;
private String username;
private String jobs;
private String phone;
@Override
public String toString() {
return "Customer{" +
"id='" + id + '\'' +
", username='" + username + '\'' +
", jobs='" + jobs + '\'' +
", phone='" + phone + '\'' +
'}';
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getJobs() {
return jobs;
}
public void setJobs(String jobs) {
this.jobs = jobs;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
5、创建dao接口和mapper文件
dao层接口实体类CustomerDao.java
package com.dao;
import com.pojo.Customer;
import java.util.List;
public interface CustomerDao {
public List<Customer> query();
public void add(Customer customer);
public void del(Integer id);
public void update(Customer customer);
public Customer queryById(Integer id);
}
在resourses文件夹下新建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">
<!-- namespace :放接口路径 id :放接口下的抽象方法名-->
<mapper namespace="com.dao.CustomerDao">
<select id="query" resultType="com.pojo.Customer">
select * from mybatis03.customer
</select>
<insert id="add" parameterType="com.pojo.Customer">
insert into mybatis03.customer(username, jobs, phone) values(#{username},#{jobs},#{phone})
</insert>
<update id="update" parameterType="com.pojo.Customer">
update mybatis03.customer set username=#{username},jobs=#{jobs},phone=#{phone} where id=#{id}
</update>
<delete id="del" >
delete from mybatis03.customer where id=#{id}
</delete>
<select id="queryById" resultType="com.pojo.Customer">
select * from mybatis03.customer where id=#{id}
</select>
</mapper>
6、在资源文件夹下创建mybatis配置文件
配置文件名:mybatis-config.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>
<properties resource="db.properties" />
<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>
</environments>
<mappers>
<mapper resource="mapper/customerMapper.xml"/>
<mapper resource="mapper/studentMapper.xml"/>
</mappers>
</configuration>
配置数据库连接文件:db.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis03?useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=x5
7、创建service接口及实现类
service接口
package com.service;
import com.pojo.Customer;
import java.util.List;
public interface CustomerService {
public List<Customer> query();
public void add(Customer customer);
public void del(Integer id);
public void update(Customer customer);
public Customer queryById(Integer id);
}
serviceImpl实现类
package com.service.impl;
import com.dao.CustomerDao;
import com.pojo.Customer;
import com.service.CustomerService;
import com.util.BaseDao;
import org.apache.ibatis.session.SqlSession;
import java.util.List;
public class CustomerServiceImpl extends BaseDao implements CustomerService {
CustomerDao dao;
SqlSession session1;
List<Customer> list;
Customer customer;
@Override
public List<Customer> query() {
session1=getSession();
dao=getSession().getMapper(CustomerDao.class);
list= dao.query();
closeSession(session1);
return list;
}
@Override
public void add(Customer customer) {
session1=getSession();
dao=getSession().getMapper(CustomerDao.class);
dao.add(customer);
closeSession(session1);
}
@Override
public void del(Integer id) {
session1=getSession();
dao=getSession().getMapper(CustomerDao.class);
dao.del(id);
closeSession(session1);
}
@Override
public void update(Customer customer) {
session1=getSession();
dao=getSession().getMapper(CustomerDao.class);
dao.update(customer);
closeSession(session1);
}
@Override
public Customer queryById(Integer id) {
session1=getSession();
dao=getSession().getMapper(CustomerDao.class);
customer= dao.queryById(id);
closeSession(session1);
return customer;
}
}
注意:serviceImpl需要继承BaseDao
8、封装类util
由于每次测试时都需要获取SqlSession,因此把公共方法抽象出来,封装于实体类BaseDao.java中
位置:
代码:
package com.util;
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 java.io.IOException;
import java.io.Reader;
public class BaseDao {
public SqlSession getSession() {
String resources = "mybatis-config.xml";
Reader reader = null;
try {
reader = Resources.getResourceAsReader(resources);
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder().build(reader);
SqlSession session = sqlMapper.openSession(true);
return session;
}
public void closeSession(SqlSession sqlSession) {
sqlSession.close();
}
}
9、编写测试类
import com.pojo.Customer;
import com.service.CustomerService;
import com.service.impl.CustomerServiceImpl;
import java.util.List;
public class MybatisTest1 {
public static void main(String[] args) {
/*StudentService studentService=new StudentServiceImpl();
Student student=new Student();
student.setUsername("李华");
student.setAge("15");
studentService.add(student);*/
CustomerService service=new CustomerServiceImpl();
List<Customer> list= service.query();
System.out.println(list);
/*
CustomerService service=new CustomerServiceImpl();
Customer customer=new Customer();
customer.setJobs("java");
customer.setPhone("1232432");
customer.setUsername("张三");
service.add(customer);
Customer customer1= service.queryById(1);
System.out.println(customer1);
service.del(1);
Customer customer2=new Customer();
customer2.setUsername("liming");
customer2.setPhone("1223");
customer2.setId("16");
customer2.setJobs("jhsdsdf");
service.update(customer2);
*/
}
}
测试结果: