mybatis框架实现数据库的增删查改
(一)不使用接口和注解
1.准备数据库
2.创建maven工程
3.在pom文件中引入需要的依赖
<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>com.lsh</groupId>
<artifactId>MYBATIS-1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
</project>
4.在resource目录下创建mybatis核心配置文件
5.配置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">
<!-- mybatis 核心配置 -->
<configuration>
<!-- 配置初始化环境(连接) -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<!-- 使用mybatis自带连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///user?characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
</configuration>
6.创建实体类User,用于封装数据
package com.lsh.pojo;
public class User {
private Integer id;
private String name;
private String sex;
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 getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", sex=" + sex + "]";
}
}
7.创建User的映射文件(Mapper/UserMapper.xml),并添加要执行的SQL语句
<?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="BlogMapper">
<!-- 插入一条记录 -->
<insert id="insertUser">
insert into user value(#{id},#{name},#{sex})
</insert>
</mapper>
8.在mybatis核心配置文件中添加(注册)映射文件UserMapper.xml
<mappers>
<mapper resource="Mapper/UserMapper.xml"/>
</mappers>
9.创建测试类测试mybatis框架
package com.lsh;
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 com.lsh.pojo.User;
public class testMybatis{
private SqlSessionFactory sqlSessionFactory;
private SqlSession sqlSession=null;
{
InputStream inputStream=null;
String resource = "mybatis-config.xml";
try {
//读取mybatis-config.xml文件保存到文件流对象
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
//根据对象中封装的信息创建sqlSessionFactory
sqlSessionFactory = new SqlSessionFactoryBuilder().
build(inputStream);
//基于sqlSessionFactory创建sqlSession,类似于JDBC中的Connection
sqlSession = sqlSessionFactory.openSession();
}
/**
* 执行此方法插入一条数据
*/
@Test
public void InsertUser(){
//准备数据user
User user=new User();
user.setId(1);
user.setName("张三");
user.setSex("男");
//startement的值为mybatis-config.xml中的
//namespace和要执行的SQL语句的id
String statement="BlogMapper.insertUser";
//执行插入语句
int rows = sqlSession.insert(statement, user);
//提交事务
sqlSession.commit();
System.out.println("受影响行数"+rows);
}
}
@Test如何执行?在有@Test注解的方法上双击选中方法名,再run as
执行结果:
10.增加查询所有记录的方法
1)在UserMapper中增加查询的SQL语句
<!-- 查询所有记录,封装到resultType中,值为封装数据的实体类的
包路径名+类名 -->
<select id="findAll" resultType="com.lsh.pojo.User">
select * from user
</select>
2)在testMybatis中添加查询所有记录的方法
/**
* 执行此方法查询所有表记录
*/
@Test
public void queryAll(){
String statement="BlogMapper.findAll";
//执行查询,封装到List集合
List<Object> userList = sqlSession.selectList(statement);
//输出到控制台
for (Object user : userList) {
System.out.println(user);
}
}
执行结果:
(二)使用接口开发
1.添加UserMapper接口并在其中添加修改的方法
2.修改UserMapper.xml文件中的namespace,并添加修改的SQL语句
需要注意的是:修改SQL语句的id必须和接口中的方法名相同,否则底层无法匹配
3.在testMybatis中添加修改的方法
/**
* 执行此方法修改相应记录
*/
@Test
public void modUser() {
//准备要修改的数据
User user=new User();
user.setId(1);
user.setName("查尔斯");
user.setSex("女");
//获取接口
UserMapper mapper = sqlSession.
getMapper(UserMapper.class);
//执行修改操作
int rows = mapper.updateUser(user);
sqlSession.commit();
System.out.println("受影响行数"+rows);
}
执行结果:
4.重复上面的步骤完成删除
1)在UserMapper.xml文件中添加删除的SQL
<!-- 根据id删除记录 -->
<delete id="deleteUser">
delete from user where id=#{id}
</delete>
2)在UserMapper接口中添加删除的方法
3)在testMybatis中完成删除功能
/**
* 执行此方法删除相应记录
*/
@Test
public void deleteId(){
UserMapper mapper = sqlSession.getMapper
(UserMapper.class);
//删除id为1的记录
int rows = mapper.deleteUser(1);
sqlSession.commit();
System.out.println("受影响行数"+rows);
}
执行结果:
(三)使用注解
1.根据id查询单条记录
1)在接口中添加查询单条记录的方法
2)在testMybatis中完成该功能