欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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目录下

mybatis基于注解实现增删改查(详细介绍)
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');

表数据如下:
mybatis基于注解实现增删改查(详细介绍)

然后再编写接口和注解,最后进行测试即可

工程结构图如下:

mybatis基于注解实现增删改查(详细介绍)

二 注解实现增删改查

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);
    }

}

代码运行结果如下:

mybatis基于注解实现增删改查(详细介绍)

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);
    }

代码运行结果如下:

mybatis基于注解实现增删改查(详细介绍)

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);

    }

代码运行结果如下:

mybatis基于注解实现增删改查(详细介绍)

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());
    }

代码运行结果如下:

mybatis基于注解实现增删改查(详细介绍)

码字不易,路过的朋友麻烦点个赞吧!

本文地址:https://blog.csdn.net/weixin_43880289/article/details/109587190

相关标签: mybatis