Mybatis框架里的增删改查都自己写吗
时间: 2023-07-21 20:06:19 浏览: 49
Mybatis框架中的增删改查操作可以使用自己编写SQL语句来实现,也可以使用Mybatis提供的Mapper接口和映射文件进行实现。如果你选择自己编写SQL语句,需要考虑SQL注入等安全问题。而使用Mapper接口和映射文件则可以避免这些问题,同时能够更方便地进行CRUD操作。当然,Mybatis也提供了一些通用的Mapper接口和插件,可以避免重复编写基本的CRUD操作。总之,Mybatis框架为我们提供了很大的灵活性,可以根据实际情况选择不同的方式来进行增删改查操作。
相关问题
mybatis框架实现增删改查系统
MyBatis 是一个开源的持久化框架,可以帮助我们简化数据库操作的编写。下面是一个使用 MyBatis 实现增删改查系统的示例:
1. 配置 MyBatis
首先需要在项目中引入 MyBatis 的依赖,然后在项目中配置 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/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/example/mapper/UserMapper.xml"/>
</mappers>
</configuration>
```
其中,配置文件中需要配置数据库的连接信息和映射文件的位置。
2. 创建数据表
在数据库中创建一个用户表,例如:
```
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
```
3. 创建实体类
创建一个 User 实体类,例如:
```
public class User {
private Integer id;
private String name;
private Integer age;
// getter and setter
}
```
4. 创建映射文件
在项目中创建一个 UserMapper.xml 映射文件,例如:
```
<?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="User">
SELECT * FROM user
</select>
<!-- 根据 id 查询用户 -->
<select id="findById" parameterType="int" resultType="User">
SELECT * FROM user WHERE id = #{id}
</select>
<!-- 新增用户 -->
<insert id="insert" parameterType="User">
INSERT INTO user (name, age) VALUES (#{name}, #{age})
</insert>
<!-- 修改用户 -->
<update id="update" parameterType="User">
UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id}
</update>
<!-- 删除用户 -->
<delete id="delete" parameterType="int">
DELETE FROM user WHERE id = #{id}
</delete>
</mapper>
```
其中,映射文件中定义了对应的 SQL 语句和参数类型。
5. 创建 DAO 层
创建一个 UserDAO 接口和实现类,例如:
```
public interface UserDAO {
List<User> findAll();
User findById(Integer id);
void insert(User user);
void update(User user);
void delete(Integer id);
}
public class UserDAOImpl implements UserDAO {
private SqlSessionFactory sessionFactory;
public UserDAOImpl(SqlSessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
public List<User> findAll() {
try (SqlSession session = sessionFactory.openSession()) {
UserMapper mapper = session.getMapper(UserMapper.class);
return mapper.findAll();
}
}
public User findById(Integer id) {
try (SqlSession session = sessionFactory.openSession()) {
UserMapper mapper = session.getMapper(UserMapper.class);
return mapper.findById(id);
}
}
public void insert(User user) {
try (SqlSession session = sessionFactory.openSession()) {
UserMapper mapper = session.getMapper(UserMapper.class);
mapper.insert(user);
session.commit();
}
}
public void update(User user) {
try (SqlSession session = sessionFactory.openSession()) {
UserMapper mapper = session.getMapper(UserMapper.class);
mapper.update(user);
session.commit();
}
}
public void delete(Integer id) {
try (SqlSession session = sessionFactory.openSession()) {
UserMapper mapper = session.getMapper(UserMapper.class);
mapper.delete(id);
session.commit();
}
}
}
```
其中,UserDAO 接口中定义了增删改查的方法,UserDAOImpl 实现了 UserDAO 接口,并且调用了对应的映射文件中的 SQL 语句。
6. 使用 DAO 层
在项目中使用 UserDAO 接口和实现类来进行数据库的操作,例如:
```
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml"));
UserDAO userDAO = new UserDAOImpl(sessionFactory);
// 查询全部用户
List<User> userList = userDAO.findAll();
// 根据 id 查询用户
User user = userDAO.findById(1);
// 新增用户
User newUser = new User();
newUser.setName("Tom");
newUser.setAge(20);
userDAO.insert(newUser);
// 修改用户
user.setName("Jerry");
user.setAge(30);
userDAO.update(user);
// 删除用户
userDAO.delete(1);
```
这样就可以使用 MyBatis 框架来实现增删改查系统了。
mybatis多表增删改查
MyBatis是一个开源的持久层框架,它可以帮助我们简化数据库操作。在MyBatis中进行多表的增删改查操作,可以通过以下几种方式实现:
1. 多表查询:
在MyBatis中,可以使用嵌套查询或者关联查询来实现多表查询。嵌套查询是指在一个SQL语句中嵌套另一个SQL语句,通过子查询获取相关数据。关联查询是指通过连接两个或多个表,根据条件获取相关数据。
2. 多表插入:
在MyBatis中,可以使用一对一或者一对多的关联关系来实现多表插入。一对一关联关系是指两个表之间的记录是一对一的关系,可以通过外键来建立关联。一对多关联关系是指一个表的记录可以对应多个另一个表的记录,可以通过外键和集合来建立关联。
3. 多表更新:
在MyBatis中,可以使用嵌套更新或者关联更新来实现多表更新。嵌套更新是指在一个SQL语句中嵌套另一个SQL语句,通过子查询更新相关数据。关联更新是指通过连接两个或多个表,根据条件更新相关数据。
4. 多表删除:
在MyBatis中,可以使用级联删除或者批量删除来实现多表删除。级联删除是指删除一个表的记录时,自动删除与之关联的其他表的记录。批量删除是指一次性删除多个表的记录。