mybatis是一款用于持久层的、轻量级的半自动化ORM框架,封装了所有jdbc操作以及设置查询参数和获取结果集的操作,支持自定义sql、存储过程和高级映射。
mybatis增删改查详细步骤:
mybatis目录
(1)引入相关的依赖 pom.xml
<dependencies>
<!--mybatis的依赖包-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.9</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.31</version>
</dependency>
<!--junit单元测试的依赖-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<!--范围:只在test下有效-->
<scope>test</scope>
</dependency>
</dependencies>
(2)创建mybatis的配置文件 mybatis.xml
<?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.cj.jdbc.Driver" />
<!--以下改成自己的路径,账号及密码-->
<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
</configuration>
(3)创建sql
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for users
-- ----------------------------
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`NAME` varchar(255) DEFAULT NULL,
`age` int(10) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of users
-- ----------------------------
INSERT INTO `users` VALUES ('2', 'Jack', '11');
INSERT INTO `users` VALUES ('3', 'zcc', '18');
INSERT INTO `users` VALUES ('4', 'cjj', '18');
(4)创建实体类User
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private Integer id;
private String name;
private Integer age;
}
(5)创建dao层UserDao
public interface UserDao {
// 根据id查询用户信息
public User findById(Integer id);
// 查询所有
public List<User>findAll();
// 根据id删除
public Integer delete(Integer id);
// 修改
public Integer update(User user);
// 添加
public Integer insert(User user);
}
(6)创建映射文件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">
<!--namesapce的内容必须和对应的接口路径映射-->
<mapper namespace="com.aaa.dao.UserDao">
<!-- 根据Id查询-->
<!--id:标识 必须和对应的方法名一致 resultType:返回类型.-->
<select id="findById" resultType="com.aaa.pojo.User">
select id,name,age from users where id=#{id}
</select>
<!-- 查询所有-->
<select id="findAll" resultType="com.aaa.pojo.User">
select id,name,age from users
</select>
<!-- 根据id删除-->
<delete id="delete" parameterType="com.aaa.pojo.User">
delete from users where id=#{id}
</delete>
<!-- 修改-->
<update id="update" parameterType="com.aaa.pojo.User">
update users set name=#{name},age=#{age} where id=#{id}
</update>
<!-- 添加-->
<insert id="insert" parameterType="com.aaa.pojo.User">
insert into users values (null,#{name},#{age})
</insert>
</mapper>
(7)把映射文件引入到配置文件中
<!--把映射文件加载过来-->
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
(8)测试类Test
public class Test1 {
//修饰符必须为public 返回类型必须为void 参数必须无参
@Test
public void TestSelectById() throws IOException {
//1.读取Mybatis配置文件.
Reader resourceAsReader = Resources.getResourceAsReader("mybatis.xml");
//2. 获取SqlSessionFactory工厂类
SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(resourceAsReader);
//3. 获取SqlSession对象---理解为COnnection
SqlSession session = sessionFactory.openSession();
//4. 获取接口的代理对象
UserDao userDao = session.getMapper(UserDao.class);
//增删改查上四步一样-----------------------------------------------
//TODO 根据Id查询
User byId = userDao.findById(1);
System.out.println(byId);
//TODO 查询所有
List<User> users = userDao.findAll();
System.out.println(users);
//TODO 根据Id删除
Integer delete = userDao.delete(1);
System.out.println(delete);
session.commit();//提交事物
//TODO 添加
Integer integer = userDao.insert(new User(null, "cjj", 18));
session.commit();
System.out.println(integer);
session.close();
//TODO 修改
Integer update = userDao.update(new User(3, "zcc", 18));
session.commit();
System.out.println(update);
session.close();
}
项目的目录结构:
MyBatisX插件安装: