下面是关于 MyBatis 的增删改查操作的完整攻略。
简介
MyBatis 是一种优秀的持久层框架,它封装了 JDBC 操作的细节,并提供了方便的 SQL 映射配置方法,使得开发者可以使用面向对象的方式进行 SQL 操作。
在 MyBatis 中,增删改查操作是非常常见的操作。本文将通过两个示例分别讲解如何使用 MyBatis 实现增删改查操作。
示例1:查询
1.1 数据库表的建立
首先,我们需要在数据库中建立一个用户表,用来存储用户信息。
CREATE TABLE user (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
age INT(11) NOT NULL,
gender ENUM('男', '女') NOT NULL,
PRIMARY KEY (id)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
1.2 实体类的定义
在 Java 代码中,我们需要先定义一个 User 实体类,用来存储与数据库表对应的数据。
public class User {
private Long id;
private String name;
private Integer age;
private Gender gender;
// getter/setter 省略
}
public enum Gender {
MALE("男"),
FEMALE("女");
private String text;
Gender(String text) {
this.text = text;
}
public String getText() {
return text;
}
}
1.3 Mapper 文件的编写
然后,我们需要为 User 实体类编写一个对应的 Mapper 文件,用来定义 SQL 语句。
<mapper namespace="com.example.mapper.UserMapper">
<resultMap id="userResultMap" type="com.example.entity.User">
<id property="id" column="id" />
<result property="name" column="name" />
<result property="age" column="age" />
<result property="gender" column="gender" />
</resultMap>
<select id="getUserById" resultMap="userResultMap">
SELECT * FROM user WHERE id = #{id}
</select>
<select id="getAllUsers" resultMap="userResultMap">
SELECT * FROM user
</select>
<insert id="addUser" parameterType="com.example.entity.User">
INSERT INTO user (name, age, gender) VALUES (#{name}, #{age}, #{gender})
</insert>
<update id="updateUser" parameterType="com.example.entity.User">
UPDATE user SET name = #{name}, age = #{age}, gender = #{gender} WHERE id = #{id}
</update>
<delete id="deleteUserById" parameterType="java.lang.Long">
DELETE FROM user WHERE id = #{id}
</delete>
</mapper>
1.4 配置文件的编写
最后,我们需要在 MyBatis 的配置文件中配置 Mapper 文件。
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test" />
<property name="username" value="root" />
<property name="password" value="password" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml" />
</mappers>
</configuration>
1.5 Java 代码的使用
现在,我们已经完成了整个 MyBatis 配置的编写。下面演示如何使用 MyBatis 查询数据库。
public class UserMapperTest {
private static SqlSessionFactory sqlSessionFactory;
@BeforeClass
public static void setup() {
sqlSessionFactory = MyBatisUtil.getSqlSessionFactory();
}
@Test
public void testGetUserById() {
try (SqlSession session = sqlSessionFactory.openSession()) {
UserMapper userMapper = session.getMapper(UserMapper.class);
User user = userMapper.getUserById(1L);
System.out.println(user);
}
}
@Test
public void testGetAllUsers() {
try (SqlSession session = sqlSessionFactory.openSession()) {
UserMapper userMapper = session.getMapper(UserMapper.class);
List<User> userList = userMapper.getAllUsers();
System.out.println(userList);
}
}
}
以上代码实现了查询单个用户和查询全部用户操作。
示例2:插入
2.1 数据库表的建立
首先,我们需要在数据库中建立一个用户表,用来存储用户信息。
CREATE TABLE user (
id INT(11) NOT NULL AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
age INT(11) NOT NULL,
gender ENUM('男', '女') NOT NULL,
PRIMARY KEY (id)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
2.2 实体类的定义
在 Java 代码中,我们需要先定义一个 User 实体类,用来存储与数据库表对应的数据。
public class User {
private Long id;
private String name;
private Integer age;
private Gender gender;
// getter/setter 省略
}
public enum Gender {
MALE("男"),
FEMALE("女");
private String text;
Gender(String text) {
this.text = text;
}
public String getText() {
return text;
}
}
2.3 Mapper 文件的编写
然后,我们需要为 User 实体类编写一个对应的 Mapper 文件,用来定义 SQL 语句。
<mapper namespace="com.example.mapper.UserMapper">
<resultMap id="userResultMap" type="com.example.entity.User">
<id property="id" column="id" />
<result property="name" column="name" />
<result property="age" column="age" />
<result property="gender" column="gender" />
</resultMap>
<select id="getUserById" resultMap="userResultMap">
SELECT * FROM user WHERE id = #{id}
</select>
<select id="getAllUsers" resultMap="userResultMap">
SELECT * FROM user
</select>
<insert id="addUser" parameterType="com.example.entity.User">
INSERT INTO user (name, age, gender) VALUES (#{name}, #{age}, #{gender})
</insert>
<update id="updateUser" parameterType="com.example.entity.User">
UPDATE user SET name = #{name}, age = #{age}, gender = #{gender} WHERE id = #{id}
</update>
<delete id="deleteUserById" parameterType="java.lang.Long">
DELETE FROM user WHERE id = #{id}
</delete>
</mapper>
2.4 配置文件的编写
最后,我们需要在 MyBatis 的配置文件中配置 Mapper 文件。
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test" />
<property name="username" value="root" />
<property name="password" value="password" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml" />
</mappers>
</configuration>
2.5 Java 代码的使用
现在,我们已经完成了整个 MyBatis 配置的编写。下面演示如何使用 MyBatis 插入数据。
public class UserMapperTest {
private static SqlSessionFactory sqlSessionFactory;
@BeforeClass
public static void setup() {
sqlSessionFactory = MyBatisUtil.getSqlSessionFactory();
}
@Test
public void testAddUser() {
try (SqlSession session = sqlSessionFactory.openSession()) {
UserMapper userMapper = session.getMapper(UserMapper.class);
User user = new User();
user.setName("张三");
user.setAge(20);
user.setGender(Gender.MALE);
userMapper.addUser(user);
session.commit();
}
}
}
以上代码实现了向数据库插入一条用户信息的操作。
总结
本文介绍了如何使用 MyBatis 进行增删改查操作,并且以查询和插入两种操作为例进行了演示。使用 MyBatis 进行数据库操作可以大大简化开发工作,提高开发效率。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mybatis之增删改查 - Python技术站