MyBatis增删改查快速上手
MyBatis是一款基于Java语言的ORM框架,通过XML或注解的方式操作数据库,可以实现较为灵活的数据库访问控制。本文将介绍MyBatis在增删改查方面的使用方法。
安装MyBatis
MyBatis可以通过Maven依赖来引入,也可以直接下载jar包。此处以Maven方式为例,需在pom.xml文件添加以下依赖:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
配置MyBatis
MyBatis需要一个配置文件mybatis-config.xml,配置文件中包含了MyBatis的一些全局属性设置以及mapper映射文件的位置信息。
以下是一个简单的配置文件示例:
<?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">
<configuration>
<settings>
<setting name="cacheEnabled" value="true"/>
<setting name="lazyLoadingEnabled" value="true"/>
</settings>
<mappers>
<mapper resource="com/example/dao/UserMapper.xml"/>
</mappers>
</configuration>
其中,<settings>
元素用于设置全局属性,<mappers>
元素用于指定mapper映射文件所在路径,此处使用<mapper resource="UserMapper.xml"/>
方式来指定路径。
编写mapper映射文件
mapper映射文件是MyBatis的核心,它定义了Java对象和SQL语句之间的映射关系。每个mapper文件包含了若干个操作数据表的语句,如增删改查等。以下是一个简单的mapper映射文件示例:
<?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="com.example.dao.UserMapper">
<resultMap id="userMap" type="com.example.pojo.User">
<id column="id" property="id"/>
<result column="name" property="name"/>
<result column="age" property="age"/>
</resultMap>
<select id="getUserById" resultMap="userMap">
select * from users where id = #{id}
</select>
<insert id="addUser">
insert into users(name, age) value(#{name}, #{age})
</insert>
<update id="updateUser">
<set>
<if test="name != null"> name = #{name} </if>
<if test="age != null">, age = #{age} </if>
</set>
where id = #{id}
</update>
<delete id="deleteUserById">
delete from users where id = #{id}
</delete>
</mapper>
以上示例定义了一个User对象和users数据表之间的映射关系,支持根据id获取user信息、添加user信息、更新user信息、删除user信息等操作。
MyBatis 增删改查示例
以下是一个简单的增删改查示例,采用注解方式实现:
public interface UserDao {
@Select("select * from users where id = #{id}")
User getUserById(int id);
@Insert("insert into users(name, age) value(#{name}, #{age})")
int addUser(User user);
@Update("update users set name = #{name}, age = #{age} where id = #{id}")
int updateUser(User user);
@Delete("delete from users where id = #{id}")
int deleteUserById(int id);
}
以上示例定义了一个UserDao接口和一组基于注解的增删改查方法,通过注解内部的SQL语句对用户信息进行操作。
以下是使用MyBatis的示例,主要是通过SqlSession对mapper映射文件中定义的语句进行调用:
public class App {
public static void main(String[] args) {
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
UserDao userDao = sqlSession.getMapper(UserDao.class);
// 查询用户信息
User user = userDao.getUserById(1);
System.out.println(user);
// 新增用户信息
User newUser = new User();
newUser.setName("Test User");
newUser.setAge(20);
userDao.addUser(newUser);
System.out.println(newUser);
// 更新用户信息
User updateUser = new User();
updateUser.setId(newUser.getId());
updateUser.setName("Test User Updated");
updateUser.setAge(21);
userDao.updateUser(updateUser);
System.out.println(updateUser);
// 删除用户信息
userDao.deleteUserById(newUser.getId());
sqlSession.commit();
sqlSession.close();
}
}
以上示例首先创建了基于配置文件的SqlSessionFactory以及一个SqlSession对象,然后通过该对象调用对应mapper映射文件中定义的操作数据表的语句,对数据库中的用户信息进行了增删改查操作,注意需要在commit和close前调用SqlSession的commit方法保证执行结果正确。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MyBatis增删改查快速上手 - Python技术站