个人主页:程序员 小侯
CSDN新晋作者
欢迎 点赞✍评论⭐收藏
✨收录专栏:MyBatis
✨文章内容: CURD操作
希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!
MyBatis作为一款优秀的Java持久层框架,提供了强大的CURD(Create, Update, Read, Delete)操作支持。在本文中,我们将深入探讨如何在MyBatis中执行简单的查询,以及如何进行插入、更新和删除操作。同时,我们还将详细解释MyBatis中的selectKey
元素的作用。
在MyBatis中执行简单的查询操作通常涉及到使用元素。以下是一个简单的例子:
<mapper namespace="com.example.UserMapper">
<select id="getUserById" resultType="User">
SELECT * FROM users WHERE id = #{id}
select>
mapper>
在这个例子中,我们定义了一个名为getUserById
的查询操作,通过#{id}
引用参数。resultType="User"
表示我们期望的查询结果将映射到User
对象。
接下来,我们可以在Java代码中调用这个查询操作:
// UserDao.java
public interface UserDao {
User getUserById(int id);
}
// UserDaoImpl.java
public class UserDaoImpl implements UserDao {
private SqlSessionFactory sqlSessionFactory;
public UserDaoImpl(SqlSessionFactory sqlSessionFactory) {
this.sqlSessionFactory = sqlSessionFactory;
}
@Override
public User getUserById(int id) {
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
return sqlSession.selectOne("com.example.UserMapper.getUserById", id);
}
}
}
在这里,我们使用SqlSession
的selectOne
方法执行查询操作,指定了查询的命名空间和操作ID。这样,我们就能够根据用户ID获取对应的用户信息。
MyBatis提供了
、
和
等元素来执行插入、更新和删除操作。以下是一个简单的插入操作的例子:
<mapper namespace="com.example.UserMapper">
<insert id="insertUser" parameterType="User">
INSERT INTO users (username, email) VALUES (#{username}, #{email})
insert>
mapper>
在这个例子中,我们定义了一个名为insertUser
的插入操作,使用#{username}
和#{email}
引用User
对象的属性。
类似地,更新和删除操作可以通过
和
元素进行定义。
<mapper namespace="com.example.UserMapper">
<update id="updateUser" parameterType="User">
UPDATE users SET username = #{username}, email = #{email} WHERE id = #{id}
update>
<delete id="deleteUserById" parameterType="int">
DELETE FROM users WHERE id = #{id}
delete>
mapper>
在Java代码中,我们可以分别调用SqlSession
的insert
、update
和delete
方法来执行这些操作。
// UserDao.java
public interface UserDao {
void insertUser(User user);
void updateUser(User user);
void deleteUserById(int id);
}
// UserDaoImpl.java
public class UserDaoImpl implements UserDao {
private SqlSessionFactory sqlSessionFactory;
public UserDaoImpl(SqlSessionFactory sqlSessionFactory) {
this.sqlSessionFactory = sqlSessionFactory;
}
@Override
public void insertUser(User user) {
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
sqlSession.insert("com.example.UserMapper.insertUser", user);
sqlSession.commit();
}
}
@Override
public void updateUser(User user) {
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
sqlSession.update("com.example.UserMapper.updateUser", user);
sqlSession.commit();
}
}
@Override
public void deleteUserById(int id) {
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
sqlSession.delete("com.example.UserMapper.deleteUserById", id);
sqlSession.commit();
}
}
}
在这里,我们分别实现了插入、更新和删除操作。需要注意的是,我们在每个操作执行后都调用了commit
方法提交事务。
selectKey
元素是MyBatis中一个比较特殊且强大的元素,它通常用于在执行插入操作后获取生成的主键值。以下是一个使用selectKey
元素的例子:
<mapper namespace="com.example.UserMapper">
<insert id="insertUser" parameterType="User">
<selectKey keyProperty="id" resultType="int" order="AFTER">
SELECT LAST_INSERT_ID()
selectKey>
INSERT INTO users (username, email) VALUES (#{username}, #{email})
insert>
mapper>
在这个例子中,selectKey
元素的作用是在插入操作后执行SELECT LAST_INSERT_ID()
语句,获取生成的主键值,并将其设置到User
对象的id
属性中。
// UserDao.java
public interface UserDao {
void insertUser(User user);
}
// UserDaoImpl.java
public class UserDaoImpl implements UserDao {
private SqlSessionFactory sqlSessionFactory;
public UserDaoImpl(SqlSessionFactory sqlSessionFactory) {
this.sqlSessionFactory = sqlSessionFactory;
}
@Override
public void insertUser(User user) {
try (SqlSession sqlSession = sqlSessionFactory.openSession()) {
sqlSession.insert("com.example.UserMapper.insertUser", user);
sqlSession.commit();
System.out.println("Generated ID after insertion: " + user.getId());
}
}
}
在Java代码中,我们仍然只需要调用insertUser
方法,而不用手动设置主键值。
MyBatis提供了丰富而强大的CURD操作支持,通过简单的配置和映射文件,我们能够轻松地实现对数据库的增、删、改、查。同时,selectKey
元素的灵活运用使得获取生成的主键值变得非常方便。在实际项目中,对这些CURD操作的熟练运用将对数据持久层的开发产生积极的影响。
后记 美好的一天,到此结束,下次继续努力!欲知后续,请看下回分解,写作不易,感谢大家的支持!!