mybatis基于注解实现增删改查(详细介绍)
程序员文章站
2022-04-22 11:40:07
mybatis高级查询——基于注解开发(详细介绍)文章目录mybatis高级查询——基于注解开发(详细介绍)一、mybatis基于注解实现增删改查1.1 搭建环境1.2 实现增删改查二、使用步骤1.引入库2.读入数据总结提示一、mybatis基于注解实现增删改查在上篇文章中我详细介绍了mybatis的SQL映射文件可以基于xml的方式配置,但是我们发现在映射文件中书写sql语句比较繁琐。因此Mybatis为用户提供了快速的开发方式,即基于注解(Annnotation)的配置方式,其可以提高开发效...
mybatis基于注解实现增删改查(详细介绍)
一、环境准备
在上篇文章中我详细介绍了mybatis的SQL映射文件可以基于xml的方式配置,但是我们发现在映射文件中书写sql语句比较繁琐。因此Mybatis为用户提供了快速的开发方式,即基于注解(Annnotation)的配置方式,其可以提高开发效率。
步骤:
1、导包:把jar包放在项目的lib目录下
2、配置核心配置文件mybatis-config.xml:
将mapper路径改为包扫描或者class路径
说明:因为没有了映射文件,所以这里采用加载接口方式,需要告知mybatis哪个接口的方法上的注解需要被执行。
<mappers>
<package name="com.it.mapper"/>
</mappers>
此时的mybatis-config.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">
<!--mybatis核心配置的根标签-->
<configuration>
<properties resource="jdbc.properties"/>
<!--开启驼峰映射-->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
<!--开启二级缓存-->
<setting name="cacheEnabled" value="true"/>
</settings>
<!--取别名-->
<typeAliases>
<package name="com.itheima.pojo"/>
</typeAliases>
<!--mybatis环境的配置,可以配置多个 比如 开发环境,测试环境,生产环境-->
<environments default="development">
<!--通常我们只配置一个就可以,id是环境的名称-->
<environment id="development">
<!--事务管理器,有JDBC来管理-->
<transactionManager type="JDBC"/>
<!--数据源配置,POOLED表示使用mybatis自带的数据库连接池-->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driverClass}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.userName}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!--批量加载映射文件-->
<mappers>
<package name="com.it.mapper"/>
</mappers>
</configuration>
jdbc.properties:
jdbc.url=jdbc:mysql:///day07_02
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.userName=root
jdbc.password=root
log4j.properties:
# 设置Logger输出级别和输出目的地
log4j.rootLogger=debug, stdout
# 把日志信息输出到控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
4、pojo实体类:
package com.it.pojo;
public class User {
private Long id;
// 用户名
private String userName;
// 密码
private String password;
// 姓名
private String name;
// 年龄
private Integer age;
//0-女 1-男
private Integer sex;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Integer getSex() {
return sex;
}
public void setSex(Integer sex) {
this.sex = sex;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", userName='" + userName + '\'' +
", password='" + password + '\'' +
", name='" + name + '\'' +
", age=" + age +
", sex=" + sex +
'}';
}
}
4、数据准备
CREATE TABLE `user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`user_name` varchar(100) DEFAULT NULL COMMENT '用户名',
`password` varchar(100) DEFAULT NULL COMMENT '密码',
`name` varchar(100) DEFAULT NULL COMMENT '姓名',
`age` int(10) DEFAULT NULL COMMENT '年龄',
`sex` int(11) DEFAULT NULL COMMENT '0-女 1-男',
PRIMARY KEY (`id`),
UNIQUE KEY `username` (`user_name`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of tb_user
-- ----------------------------
INSERT INTO `user` VALUES ('1', 'zhangsan', '123456', '张三', '30', '1');
INSERT INTO `user` VALUES ('2', 'lisi', '123456', '李四', '21', '0');
INSERT INTO `user` VALUES ('3', 'wangwu', '123456', '王五', '22', '1');
INSERT INTO `user` VALUES ('4', 'zhangwei', '123456', '张伟', '20', '1');
INSERT INTO `user` VALUES ('5', 'lina', '123456', '李娜', '28', '0');
INSERT INTO `user` VALUES ('6', '蔡徐坤', '123', '小菜', '18', '1');
表数据如下:
然后再编写接口和注解,最后进行测试即可
工程结构图如下:
二 注解实现增删改查
2.1 增@Insert
步骤:
1、定义接口:
public interface UserMapper {
@Insert("insert into user values(null,#{userName},#{password},#{name},#{age},#{sex})")
public void addUser(User user);
}
2、测试:
public class TestAll {
private static UserMapper userMapper;
@BeforeClass
public static void init() throws IOException {
//1.读取核心配置文件,构建会话工厂
InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(in);
//2.获取会话对象
SqlSession session = sessionFactory.openSession(true);
//3.获取代理对象
userMapper=session.getMapper(UserMapper.class);
}
@Test
public void test1(){
User user = new User();
user.setAge(18);
user.setPassword("123");
user.setSex(1);
user.setUserName("zhangtao");
user.setName("tao");
userMapper.addUser(user);
}
}
代码运行结果如下:
2.2 删@Delete
步骤:
1、定义接口:
@Delete("delete from user where id=#{uid}")
void deleteById(@Param("uid") Long id);
2、测试:
@Test
public void test2(){
userMapper.deleteById(6l);
}
代码运行结果如下:
2.3 改@Update
步骤:
1、定义接口:
@Update("update user set user_name=#{userName},password=#{password}," +
"name=#{name},age=#{age},sex=#{sex} where id=#{id}")
Integer updateUser(User user);
2、测试
@Test
public void test3(){
User user = new User();
user.setId(2l);
user.setAge(18);
user.setPassword("123");
user.setSex(1);
user.setUserName("zhangtao2");
user.setName("tao");
Integer count = userMapper.updateUser(user);
System.out.println(count);
}
代码运行结果如下:
2.4 查@Select
步骤:
1、定义接口:
@Select("select * from user where id=#{id}")
User findById(@Param("id") Long id);
2、测试
@Test
public void test4(){
User user = userMapper.findById(1l);
System.out.println(user.toString());
}
代码运行结果如下:
码字不易,路过的朋友麻烦点个赞吧!
本文地址:https://blog.csdn.net/weixin_43880289/article/details/109587190