既然涉及到了增删改查,准备⼯作是⼀定要有数据库,并且建⽴好表格。
create table user
(
id int not null,
name varchar(20) not null,
pwd varchar(20) not null,
gender varchar(20) not null
);
//添加表格内容
insert into user values (1,"name","123","男");
最后我创建的表格是这样的
一、创建项目
先创建一个maven项目,名字可以自己取
二、导入依赖
接下来在这个pom.xml文件中手动添加依赖
<dependencies>
<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.11</version>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.33</version>//一定要是自己电脑上下载的mybatis的版本!
</dependency>
<!--junit 单元测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>
导入依赖后点击右上角小图标自动加载配置依赖
三、配置 mybatis-config.xml
先在resources目录下创建org.example.xml目录
在resources目录下创建mybatis-config.xml文件
在文件中输入配置代码
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSl=true"/>
<property name="username" value="root"/><!--这里是自己的用户名-->
<property name="password" value="xxxxxx"/><!--这里是自己的密码-->
</dataSource>
</environment>
</environments>
<!--数据库映射文件 -->
<mappers>
<!--加载sql映射文件-->
<mapper resource="org.example.mapper/UserMapper.xml"/> <!--一定要改!下面复制自己UserMapper的路径名-->
</mappers>
</configuration>
四、创建工具类
在目录中建立utils的文件,创建MybatisUtils类,目录如下
在文件中输入代码:
package org.example.utils;
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.InputStream;
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
//加载mybatis的核心配置文件
String source = "mybatis-config.xml";
InputStream inputStream = null;
inputStream = Resources.getResourceAsStream(source);
//通过资源的名称获取一个输入流
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//创建一个数据库的会话工厂,使用了sqlsessionfactorybuilder类来构建,而其输入流是通过inputstream读取的
} catch (IOException e) {
e.printStackTrace();
}
/*查了一下,catch的作用主要是如果在前面的代码中发生了IOException,
即输入流的读取过程出现了问题,那么程序会执行catch块中的代码,打印出异常的堆栈信息,
以便进行调试和错误处理
*/
}
// 获取SqlSession
public static SqlSession getSqlSession() {
return sqlSessionFactory.openSession();
}
}
五、创建实体类
创建实体类User,存放方法。
package org.example.pojo;
public class User {
private String name;
private String pwd;
private String gender;
public User(){
}
public User(String name ,String pwd, String gender){
this.gender = gender;
this.name =name;
this.pwd = pwd;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
//to string打印类中实体变量属性
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", pwd='" + pwd + '\'' +
", gender=" + gender +
'}';
}
}
六、创建接口
创建接口UserMapper,定义方法的规范
package org.example.pojo;
public class User {
private String name;
private String pwd;
private String gender;
public User(){
}
public User(String name ,String pwd, String gender){
this.gender = gender;
this.name =name;
this.pwd = pwd;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
//to string打印类中实体变量属性
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", pwd='" + pwd + '\'' +
", gender=" + gender +
'}';
}
}
七、创建接口对应的xml文件
在resources下创建和UserMapper接口对应的xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--
namespace:命名空间
-->
<mapper namespace="org.example.mapper.UserMapper">
<!--注意这里是要复制UserMapper接口的路径地址-->
<!--
<resultMap id="userResultMap" type="org.example.pojo.User">
<!-colum:数据库里的字段名 property是类中对应的属性名->
<result column="uname" property="uname"></result>
</resultMap>-->
<!-- id:每一个sql语句的唯一标识,即外部通过id来调用语句 -->
<!-- resultType:返回的结果类型,即定义的POJO类-->
<!--查询-->
<select id="selectByID" resultType="org.example.pojo.User">
select * from user where id = #{id}
</select>
<!--增加-->
<insert id="add" parameterType="org.example.pojo.User">
insert into user(id,name,pwd,gender) values(#{id},#{name},#{pwd},#{gender});
</insert>
<!--修改-->
<update id="update" parameterType="org.example.pojo.User">
update user set id = #{id} , pwd = #{pwd} where gender = #{gender};
</update>
<!--删除-->
<delete id="deleteByID" parameterType="int">
delete from user where id = #{id};
</delete>
</mapper>
八、写测试类
下面是测试类的代码:
package org.example.test;
import org.example.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.example.mapper.UserMapper;
import org.example.pojo.User;
import org.junit.Test;
public class Test1 {
@Test
public void getUserListTest() {
// 1.获得SqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
// 2.执行SQL
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
int id = 2;
User user = userMapper.selectByID(id);
System.out.println(user);
sqlSession.close();
}
@Test
public void addUserTest() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
int res = userMapper.add(new User(5,"白骨精", "127", "女"));
System.out.println(res);
// 提交事务
sqlSession.commit();
sqlSession.close();
}
@Test
public void updateUserTest() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
int res = userMapper.update(new User(0, "白骨精", "888", "女"));
System.out.println(res);
sqlSession.commit();
sqlSession.close();
}
@Test
public void deleteUserTest() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
userMapper.deleteByID(1);
sqlSession.commit();
sqlSession.close();
}
}
九、测试结果
原表格:
查询(我写的是根据id查询信息):
查询的是id为2的信息:
增加信息:
增加了白骨精的信息
修改信息:
把白骨精的密码改成888
删除信息:
删除id=1的信息