mybatis增删改查操作基础


由于mybatis就是对永久层简化的一种操作,器主要的操作就是对数据库的增删改查,因此今天我将介绍mybatis增删改查操作的基础

增删改查操作实现的步骤

与Jdbc相同,mybatis的增删改查工作也是有很多的共性的,区别只存在于sql语句的编写

共同步奏:

  1. 编写mapper接口类 创建方法
  2. 编写mapper接口类的实现xml文件
  3. 使用

SELECT 查询

查询可以分为两种:1.查询全部内容,2.通过参数参训

查询全部内容(无参查询)

1
2
3
4
5
6
<!--与Dao类的实现类一样 这里是写sql语句-->
<!--id指的是我们调用这个sql使用的名字,可以理解为BaseDaoImp的方法名-->
<!--resultType表示返回的数据的类型 如果是自己创建的类 需要填写整个路径-->
<select id="getList" resultType="com.dwx.pojo.student">
select * from mybatis.student
</select>

元素分析:

  • id与mapper抽象类中的方法相同
  • resulttype指的是返回值类型 如果是基本数据类型直接写基本数据类型,如果是自定义数据类型就将全部的路径都写下来

查询部分内容(有参查询)

1
2
3
4
5
<!--parameterType表示参数类型-->
<!--通过特定的参数查询,一定要写好参数类型 一般查收农户类型直接写 自定义的参数类型就写参数的全路径-->
<select id="getStudentById" resultType="com.dwx.pojo.student" parameterType="int">
select * from mybatis.student where id = #{id}
</select>

元素分析:

  • id与mapper抽象类中的方法相同
  • resulttype指的是返回值类型 如果是基本数据类型直接写基本数据类型,如果是自定义数据类型就将全部的路径都写下来
  • parameterType表示参数类型 在这个xml文档是 通过#{参数名} 来获得参数的 获得的参数来自id指的方法

INSERT 插入

插入即增加

1
2
3
4
<!--我们可以直接把参数类型中的子类型提取出来使用-->
<insert id="InsertStudent" parameterType="com.dwx.pojo.student">
insert into mybatis.student (id,name,password) values(#{id},#{name},#{password})
</insert>

注意:插入操作的实现是需要提交事务的,写到实现方法时会再次强调

插入没有返回值类型

  • id与mapper抽象类中的方法相同
  • parameterType表示参数类型 在这个xml文档是 通过#{参数名} 来获得参数的 获得的参数来自id指的方法

DELETE 删除

1
2
3
4
<!--删除操作-->
<delete id="DeleteStudent" parameterType="int">
delete from mybatis.student where id = #{id}
</delete>

删除没有返回值类型

  • id与mapper抽象类中的方法相同
  • parameterType表示参数类型 在这个xml文档是 通过#{参数名} 来获得参数的 获得的参数来自id指的方法

UPDATE SET 修改

更新 设置 即为修改

1
2
3
4
<!--修改用户信息-->
<update id="UpdateStudent" parameterType="com.dwx.pojo.student">
update mybatis.student set name = #{name},password = #{password} where id = #{id}
</update>

修改没有返回值类型

  • id与mapper抽象类中的方法相同
  • parameterType表示参数类型 在这个xml文档是 通过#{参数名} 来获得参数的 获得的参数来自id指的方法

mapper/dao 抽象类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
package com.dwx.dao;

import com.dwx.pojo.student;

import java.util.List;

//编写一个抽象的DAO接口
public interface UserDao {
//编写这个接口需要的方法
//查询所有的用户
List<student> getList();
//通过id查询用户
student getStudentById(int id);
//增加用户
void InsertStudent(student student);
//修改用户信息
void UpdateStudent(student student);
//通过id删除用户信息
void DeleteStudent(int id);
}

实现类(测试类)

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
package com.dwx.dao;

import com.dwx.pojo.student;
import com.dwx.untils.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class UserDaoTest {
@Test
public void test(){
//调用我们的myBatisUtils来获得是SqlSession
MyBatisUtils myBatisUtils = new MyBatisUtils();
SqlSession sqlSession = myBatisUtils.getSqlSession();
//sqlSession进行操作
//通过反释来获得UserMapper
UserDao mapper = sqlSession.getMapper(UserDao.class);
//获得的mapper对象就能调用“id”,来实现操作了
List<student> list = mapper.getList();
for (student student : list) {
System.out.print(student.getId());
System.out.print(student.getName());
System.out.println(student.getPassword());
}
sqlSession.close();

}
//通过参数查询的测试方法
@Test
public void getStudentById(){
//这些都是固定格式
MyBatisUtils myBatisUtils = new MyBatisUtils();
SqlSession sqlSession = myBatisUtils.getSqlSession();
//sqlSession获得联结
UserDao mapper = sqlSession.getMapper(UserDao.class);
student studentById = mapper.getStudentById(2);
System.out.println(studentById);
System.out.println(studentById.getId()+studentById.getName()+studentById.getPassword());


sqlSession.close();
}
@Test
public void InsertStudnet(){
MyBatisUtils myBatisUtils = new MyBatisUtils();
SqlSession sqlSession = myBatisUtils.getSqlSession();
//获得了sqlSession就需要进行联结获得mapper
UserDao mapper = sqlSession.getMapper(UserDao.class);
//通过mapper对象来进行操作
mapper.InsertStudent(new student(4,"王五","123456"));
//对于需要对数据库进行改动的如:“增删改” 都系要提交事物
sqlSession.commit();
//关闭sqlsession
sqlSession.close();
}
@Test
public void update(){
MyBatisUtils myBatisUtils = new MyBatisUtils();
SqlSession sqlSession = myBatisUtils.getSqlSession();

UserDao mapper = sqlSession.getMapper(UserDao.class);
mapper.UpdateStudent(new student(3,"李四","123456"));
//注意必须提交事务
sqlSession.commit();
sqlSession.close();
}
@Test
public void delete(){
MyBatisUtils myBatisUtils = new MyBatisUtils();
SqlSession sqlSession = myBatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
mapper.DeleteStudent(3);
//提交事务
sqlSession.commit();
sqlSession.close();
}
}

注意,JDBC中有链接(getconnection)就完成了事务的提交,但是mybatis需要手动提交事务。

就是在执行完对数据库有改动的操作(增删改)后需要加一个语句sqlSession.commit()

Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2015-2023 dwx
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信