下面我将详细讲解“mybatis实现对数据的增删查改实例详解”的完整攻略。
1. Mybatis介绍
Mybatis是一种基于Java的数据持久化框架,它通过XML或注解的方式将Java对象映射到数据库中的数据表中,从而实现对数据库的操作。
2. Mybatis的基本使用
2.1 配置文件
Mybatis的配置文件包含了以下几个主要部分:
configuration
标签:表示Mybatis的配置信息,这个标签是必须的。typeAliases
标签:定义Java类的别名,可以简化SQL语句中的参数类型。mappers
标签:指定一个或多个映射文件,映射文件用于指定SQL语句及其对应的Java类。
下面是一个Mybatis的基本配置文件:
<?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>
<!-- 数据源配置 -->
<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="123456"/>
</dataSource>
</environment>
</environments>
<!-- 映射文件配置 -->
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml"/>
<mapper resource="com/example/mapper/OrderMapper.xml"/>
</mappers>
</configuration>
2.2 映射文件
映射文件用于定义SQL语句及其对应的Java类,它包含以下几个主要部分:
mapper
标签:表示映射文件的根元素,包含一个或多个select
、insert
、update
、delete
等标签。resultMap
标签:表示结果映射,用于定义Java对象与数据库表的映射关系。select
、insert
、update
、delete
等标签:表示对应的SQL语句,包含参数的类型、返回值类型、SQL语句等信息。
下面是一个简单的映射文件示例:
<?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.mapper.UserMapper">
<!-- 定义查询语句 -->
<select id="findById" parameterType="int" resultType="com.example.model.User">
select * from user where id = #{id}
</select>
<!-- 定义插入语句 -->
<insert id="insert" parameterType="com.example.model.User">
insert into user (name, age) values (#{name}, #{age})
</insert>
</mapper>
2.3 DAO接口
DAO接口作为映射文件的代理类,用于实现Java类到SQL语句的映射。它包含了定义在映射文件中的方法,方法名及参数名必须与映射文件中的对应标签相同。
下面是一个简单的DAO接口示例:
package com.example.mapper;
import com.example.model.User;
public interface UserMapper {
User findById(int id);
void insert(User user);
}
2.4 Mybatis的增删查改实例
下面我们来通过两个示例来演示Mybatis的增删查改实现。
2.4.1 查询操作示例
首先,我们定义一个数据表 user,其中包含以下字段:id、name、age。接下来我们通过Mybatis实现对user表的查询操作。
2.4.1.1 数据库表的创建
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`name` varchar(20) NOT NULL COMMENT '姓名',
`age` int(11) NOT NULL COMMENT '年龄',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.4.1.2 定义实体类
package com.example.model;
public class User {
private int id;
private String name;
private int age;
// 省略 getter 和 setter 方法
}
2.4.1.3 定义映射文件
<?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.mapper.UserMapper">
<!-- 查询所有用户 -->
<select id="findAll" resultType="com.example.model.User">
select * from user
</select>
</mapper>
2.4.1.4 定义DAO接口
package com.example.mapper;
import com.example.model.User;
import java.util.List;
public interface UserMapper {
List<User> findAll();
}
2.4.1.5 使用Mybatis查询用户信息,并输出到控制台
package com.example;
import com.example.mapper.UserMapper;
import com.example.model.User;
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;
import java.util.List;
public class App {
public static void main(String[] args) throws IOException {
// 读取 Mybatis 的配置文件
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
// 构建 SqlSessionFactory 工厂
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 创建 SqlSession 对象
SqlSession sqlSession = sqlSessionFactory.openSession();
// 获取 Mapper 接口的代理对象
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
// 查询所有用户
List<User> userList = userMapper.findAll();
// 输出用户信息
for (User user : userList) {
System.out.println(user);
}
// 关闭 sqlSession 对象
sqlSession.close();
}
}
2.4.2 修改操作示例
接下来,我们通过一个示例演示Mybatis的修改操作。
2.4.2.1 定义数据库表
CREATE TABLE `student` (
`id` int(11) NOT NULL COMMENT 'ID',
`name` varchar(20) NOT NULL COMMENT '姓名',
`age` int(11) NOT NULL COMMENT '年龄',
`gender` varchar(2) NOT NULL COMMENT '性别',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2.4.2.2 定义实体类
package com.example.model;
public class Student {
private int id;
private String name;
private int age;
private String gender;
// 省略 getter 和 setter 方法
}
2.4.2.3 定义映射文件
<?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.mapper.StudentMapper">
<!-- 根据ID更新学生信息 -->
<update id="updateById" parameterType="com.example.model.Student">
update student set name = #{name}, age = #{age}, gender = #{gender} where id = #{id}
</update>
</mapper>
2.4.2.4 定义DAO接口
package com.example.mapper;
import com.example.model.Student;
public interface StudentMapper {
void updateById(Student student);
}
2.4.2.5 使用Mybatis修改学生信息
package com.example;
import com.example.mapper.StudentMapper;
import com.example.model.Student;
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 App {
public static void main(String[] args) throws IOException {
// 读取 Mybatis 的配置文件
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
// 构建 SqlSessionFactory 工厂
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 创建 SqlSession 对象
SqlSession sqlSession = sqlSessionFactory.openSession();
// 获取 Mapper 接口的代理对象
StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
// 查询学生信息
Student student = new Student();
student.setId(1);
student.setName("张三");
student.setAge(20);
student.setGender("男");
// 修改学生信息
studentMapper.updateById(student);
// 提交事务
sqlSession.commit();
// 关闭 sqlSession 对象
sqlSession.close();
}
}
以上就是 Mybatis 实现对数据的增删查改示例的详解,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mybatis实现对数据的增删查改实例详解 - Python技术站