右耳菌-邓小白的Java架构师的修炼之路

MyBatis 注解的使用

2022-04-29  本文已影响0人  右耳菌
数据库表准备

两张测试用表,用以测试使用

CREATE TABLE users (
  id int(11) NOT NULL AUTO_INCREMENT,
  name varchar(255)  DEFAULT NULL,
  username varchar(255) NOT NULL,
  password varchar(255) NOT NULL,
  PRIMARY KEY (id),
  UNIQUE KEY UK_username (username)
) ENGINE=InnoDB AUTO_INCREMENT=1000 DEFAULT CHARSET=utf8
CREATE TABLE product (
    id int(11) NOT NULL AUTO_INCREMENT,
    name char(20) NOT NULL DEFAULT '',
    description char(100) DEFAULT NULL,
    price int(7) NOT NULL,
    pic char(20) DEFAULT NULL,
    uid int(11) NOT NULL DEFAULT 0,
    PRIMARY KEY (id)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET = utf8

例子
1. 创建SpringBoot项目
2. pom.xml引入以下依赖
   <dependencies>
        <!-- MyBatis -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.2</version>
        </dependency>
        <!-- MySQL驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!-- 引入Lombok, 如何启用请查看 https://www.jianshu.com/p/9109d2d0b432  -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!-- 默认的测试依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
3. 修改application.properties
#mysql的配置信息
spring.datasource.url=jdbc:mysql://localhost:3306/cloud_study?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
spring.datasource.username=####(账号)
spring.datasource.password=####(密码)
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

#展示sql语句
logging.level.cn.lazyfennec.springboot.repository=debug

#MyBatis的配置, 本项目使用注解版,故不需要以下配置
#设置mybatis的配置文件路径,默认是在resources的目录
#mybatis.config-location=classpath:mybatis/mybatis-config.xml
#设置mybatis下面的mapper映射文件路径,默认是在resources的目录
#mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
#设置项目中实体类包路径;
#mybatis.type-aliases-package=cn.lazyfennec.springboot.entity
4. 创建实体类
package cn.lazyfennec.springboot.entity;

import lombok.Data;

import java.util.List;

/**
 * @Author: Neco
 * @Description:
 * @Date: create in 2022/4/29 0:20
 */
@Data
public class Users {
    private Integer id;
    private String name;
    private String username;
    private String password;
    private List<Product> products;
}
package cn.lazyfennec.springboot.entity;

import lombok.Data;

/**
 * @Author: Neco
 * @Description:
 * @Date: create in 2022/4/29 0:21
 */
@Data
public class Product {
    private Integer id;
    private String name;
    private String description;
    private Double price;
    private String pic;
    private Integer uid; // users 的 id
}
5. 常用注解
    @Select("select id, name, username, password from users")
    public List<Users> findAll();

    @Select("select id, name, username, password from users where id=#{id}")
    public Users findById(@Param("id") String id);
    @Update("update set name=#{users.name}, password=#{users.password} where id = #{users.id}")
    public void updateUsers(@Param("users") Users users);
    @Insert("insert into users (name, username, password) values(#{users.name}, #{users.username}, #{users.password})")
    public void insertUser(@Param("users") Users users);
    @Delete("delete from users where id=#{id}")
    public void deleteUserById(Integer id);
6. 更复杂的注解用法

使用例子如下

package cn.lazyfennec.springboot.repository;

import cn.lazyfennec.springboot.entity.Users;
import org.apache.ibatis.annotations.*;

import java.util.List;

public interface UsersRepository {
    @Select("select id, name, username, password from users")
    public List<Users> findAll();

    @Select("select id, name, username, password from users where id=#{id}")
    public Users findById(@Param("id") String id);

    @Update("update set name=#{users.name}, password=#{users.password} where id = #{users.id}")
    public void updateUsers(@Param("users") Users users);

    @Insert("insert into users (name, username, password) values(#{users.name}, #{users.username}, #{users.password})")
    public void insertUser(@Param("users") Users users);

    @Delete("delete from users where id=#{id}")
    public void deleteUserById(Integer id);


    @Select("select * from Users where id=#{id}")
    @Results({
            @Result(
                    property = "products", column = "id", many = @Many(select = "com.study.mybatis.repository.ProductRepository.findByUid")
            )
    })
    Users findUsersById(int id);
}
package cn.lazyfennec.springboot.repository;

import cn.lazyfennec.springboot.entity.Product;
import org.apache.ibatis.annotations.Select;

public interface ProductRepository {
    @Select("select * from Product where uid=#{uid}")
    Product findByUid(int uid);
}

7. 更多注解相关内容,请查看 官网 https://mybatis.org/mybatis-3/zh/java-api.html

更多知识,请点击关注查看我的主页信息哦~

上一篇 下一篇

猜你喜欢

热点阅读