MyBatis注解实现数据交互

项目结构

在这里插入图片描述

一,通过注解实现增删改查

第一步

修改mybatis-config.xml中的映射

 <package name="com.it.www.dao"/>

第二步

创建注解开发接口

package com.it.www.dao;

import com.it.www.pojo.User;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

/**
 * <p>@description  : 该类功能  TODO
 * </p>
 * <p>@package      : com.it.www.dao</p>
 * <p>@author       : ZiXieqing</p>
 * <p>@createTime   : 2023-02-08</p>
 * <p>@version      : V1.0.0</p>
 */

public interface NoteDao {
    /**
     * 注解开发显示
     */
    @Select("select * from user")
    List<User> showUsersByAT();

    /**
     * 注解开发删除
     */
    @Delete("delete from user where userId=#{userId}")
    int deleteUserByUserId1(int userId);

    /**
     * 注解开发修改
     */
    @Update("UPDATE user SET userName=#{userName},userSex = #{userSex} " +
            "WHERE userId=#{userId}")
    int updataUser(User user);


    /**
     * 注解开发添加
     */
    @Insert("INSERT INTO user VALUES( #{userId},#{userName},#{userSex}," +
            "                    #{userAge},  #{userBirthday}," +
            "                    #{userPhone},#{userAddress}," +
            "                    #{departId},#{gradeId})")
    int addUser(User user);
}

第三步

通过封装的mybatis工具类实现接口中的方法

 /**
     * 注解开发显示数据
     */
    @Test
    public void showUserByNone() {
        SqlSession sqlSession = this.createSqlSession();
        NoteDao dao = sqlSession.getMapper(NoteDao.class);
        List<User> userList = dao.showUsersByAT();
        userList.forEach(user -> System.out.println(user));
        this.colseSqlSession(sqlSession);
    }

    /**
     * 注解添加用户信息
     */
    @Test
    public void addUser(){
        SqlSession sqlSession = this.createSqlSession();
        NoteDao dao = sqlSession.getMapper(NoteDao.class);
        User user1 = new User(0,"高育良","男1",28,"2022-8-9","1234567","李家村",1,1);
        int row = dao.addUser(user1);
        if (row > 0) {
            System.out.println("添加成功");
            sqlSession.commit();
        } else {
            System.out.println("add User have error");
        }
        this.colseSqlSession(sqlSession);
    }

    /**
     * 注解修改用户信息
     */
    @Test
    public void updataUser(){
        SqlSession sqlSession = this.createSqlSession();
        NoteDao dao= sqlSession.getMapper(NoteDao.class);
        User user = new User();
        user.setUserId(14);
        user.setUserName("卫妝");
        user.setUserSex("女");
        int row = dao.updataUser(user);
        if (row > 0) {
            System.out.println("修改成功");
            sqlSession.commit();
        } else {
            System.out.println("update User have error");
        }
        this.colseSqlSession(sqlSession);
    }

    /**
     * 注解删除信息
     */
    @Test
    public void deleteUser111(){
        SqlSession sqlSession = this.createSqlSession();
        NoteDao dao = sqlSession.getMapper(NoteDao.class);
        int row = dao.deleteUserByUserId1(15);
        if (row > 0) {
            System.out.println("删除成功");
            sqlSession.commit();
        } else {
            System.out.println("delete User have error");
        }
        this.colseSqlSession(sqlSession);

    }

二,通过注解开发实现一对多

package com.it.www.dao;

import com.it.www.pojo.BankCar;
import com.it.www.pojo.User;
import org.apache.ibatis.annotations.*;

import javax.annotation.Resources;
import java.util.List;

/**
 * <p>@description  : 该类功能  注解开发多表操作
 * </p>
 * <p>@package      : com.it.www.dao</p>
 * <p>@author       : ZiXieqing</p>
 * <p>@createTime   : 2023-02-08</p>
 * <p>@version      : V1.0.0</p>
 */

public interface NoteDao {
    /**
     * 一对多注解开发
     */
    @Select("select * from user")
    @Results({
            @Result( property = "userId" ,column = "#{userId}"),
            @Result(property = "userName" , column = "#{userName}"),
            @Result(property = "userIdCard", column = "#{userIdCard}"),
            @Result(property = "userPhone", column = "#{userPhone}"),
            @Result(property = "userPassword", column = "#{userPassword}"),
            @Result(property = "userAddress", column = "#{userAddress}"),
            @Result(property = "bankcarList", javaType = List.class,
                    column = "userId",
                    many = @Many(select = "com.it.www.dao.NoteDao.findBanksByUserId")
            )
    })
    List<User> showUserBYNote();
    @Select("select * from bankcar where userId=#{userId}")
    List<BankCar> findBanksByUserId(int userId);
}

代码若有不严谨之处,请大佬们多多指点 !!!

Spring Boot 是一个用于创建独立的、基于Spring的应用程序的框架,而 Mybatis Plus 是在 Mybatis 的基础上进行了封装和扩展,提供了更为便捷的 CRUD 操作。 要实现 Spring Boot 和 Mybatis Plus 的交互,需要进行以下几个步骤: 1. 添加 Maven 依赖 在 pom.xml 文件中添加以下 Maven 依赖: ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.16</version> </dependency> ``` 其中,spring-boot-starter-web 用于创建 Web 应用程序,mybatis-plus-boot-starter 用于集成 Mybatis Plus,druid-spring-boot-starter 用于集成 Druid 数据库连接池。 2. 配置数据源 在 application.properties 文件中配置数据源信息,例如: ``` spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus_test?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # 配置Druid连接池 spring.datasource.type=com.alibaba.druid.pool.DruidDataSource spring.datasource.initialSize=5 spring.datasource.minIdle=5 spring.datasource.maxActive=20 spring.datasource.maxWait=60000 spring.datasource.timeBetweenEvictionRunsMillis=60000 spring.datasource.minEvictableIdleTimeMillis=300000 spring.datasource.validationQuery=SELECT 1 FROM DUAL spring.datasource.testWhileIdle=true spring.datasource.testOnBorrow=false spring.datasource.testOnReturn=false spring.datasource.poolPreparedStatements=true spring.datasource.maxPoolPreparedStatementPerConnectionSize=20 spring.datasource.filters=stat,wall spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 ``` 这里使用的是 MySQL 数据库和 Druid 数据库连接池。 3. 配置 Mybatis Plus 在 application.properties 文件中添加 Mybatis Plus 的配置信息,例如: ``` # Mybatis Plus配置 mybatis-plus.mapper-locations=classpath*:mapper/*.xml mybatis-plus.type-aliases-package=com.example.demo.entity mybatis-plus.global-config.id-type=auto mybatis-plus.global-config.db-config.logic-delete-value=1 mybatis-plus.global-config.db-config.logic-not-delete-value=0 mybatis-plus.configuration.map-underscore-to-camel-case=true ``` 其中,mapper-locations 指定 Mapper 映射文件的位置,type-aliases-package 指定实体类的包名,global-config 中配置了主键生成策略和逻辑删除的配置。 4. 创建实体类和 Mapper 接口 创建实体类和对应的 Mapper 接口,例如: ``` @Data @TableName("user") public class User { @TableId(type = IdType.AUTO) private Long id; private String name; private Integer age; private String email; private Date createTime; } @Mapper public interface UserMapper extends BaseMapper<User> { } ``` 其中,@TableName 注解指定了实体类对应的表名,@TableId 注解指定了主键生成策略,@Mapper 注解指定了 Mapper 接口。 5. 创建 Service 层 创建 Service 层,例如: ``` public interface UserService extends IService<User> { } @Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService { } ``` 其中,IService 和 ServiceImpl 分别是 Mybatis Plus 的接口和实现类,用于提供常用的 CRUD 操作。 6. 创建 Controller 层 创建 Controller 层,例如: ``` @RestController @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @GetMapping("/{id}") public User getUserById(@PathVariable Long id) { return userService.getById(id); } @PostMapping("/") public boolean addUser(@RequestBody User user) { return userService.save(user); } @PutMapping("/") public boolean updateUser(@RequestBody User user) { return userService.updateById(user); } @DeleteMapping("/{id}") public boolean deleteUser(@PathVariable Long id) { return userService.removeById(id); } } ``` 其中,@RestController 和 @RequestMapping 注解用于创建 RESTful 风格的接口,@Autowired 注解用于注入 UserService 对象,@GetMapping、@PostMapping、@PutMapping 和 @DeleteMapping 注解分别对应 HTTP 的 GET、POST、PUT 和 DELETE 请求。 至此,就实现Spring Boot 和 Mybatis Plus 的交互,并提供了常见的 CRUD 操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值