IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> mybatisplus-jpa-mybatis实现CURD的区别 -> 正文阅读

[Java知识库]mybatisplus-jpa-mybatis实现CURD的区别

jpa中数据的增删改查

@Entity
@Data
public class Book {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;
    private String name;
    private String author;
}

mapper***************

public interface BookRepository extends JpaRepository<Book,Integer> {
}

controller

@RestController
@RequestMapping("/book")
public class BookHandler {
    @Autowired
    private BookRepository bookRepository;
分页查询
    @GetMapping("/findAll/{page}/{size}")
    public Page<Book> findAll(@PathVariable("page") Integer page, @PathVariable("size") Integer size){
        PageRequest request = PageRequest.of(page,size);
        return bookRepository.findAll(request);
    }
新增
    @PostMapping("/save")
    public String save(@RequestBody Book book){
        Book result = bookRepository.save(book);
        if(result != null){
            return "success";
        }else{
            return "error";
        }
    }
依据id查询
    @GetMapping("/findById/{id}")
    public Book findById(@PathVariable("id") Integer id){
        return bookRepository.findById(id).get();
    }
更新
    @PutMapping("/update")
    public String update(@RequestBody Book book){
        Book result = bookRepository.save(book);
        if(result != null){
            return "success";
        }else{
            return "error";
        }
    }
删除
    @DeleteMapping("/deleteById/{id}")
    public void deleteById(@PathVariable("id") Integer id){
        bookRepository.deleteById(id);
    }
}


跨域问题解决办法


@Configuration
public class CrosConfig implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS")
                .allowCredentials(true)
                .maxAge(3600)
                .allowedHeaders("*");
    }
}

mybatisplus 增删改查

entity


@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("m_user")
public class User implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    @NotBlank(message = "昵称不能为空")
    private String username;

    private String avatar;
    
    
    mapper
        
        
        
        public interface UserMapper extends BaseMapper<User> {

}
    
    service
        
        
    public interface UserService extends IService<User> {

}
    
    controller
        
        
        @Autowired
    BlogService blogService;

    @GetMapping("/blogs")
    public Result list(@RequestParam(defaultValue = "1") Integer currentPage) {

        Page page = new Page(currentPage, 5);
        IPage pageData = blogService.page(page, new QueryWrapper<Blog>().orderByDesc("created"));

        return Result.succ(pageData);
    }

    @GetMapping("/blog/{id}")
    public Result detail(@PathVariable(name = "id") Long id) {
        Blog blog = blogService.getById(id);
        Assert.notNull(blog, "该博客已被删除");

        return Result.succ(blog);
    }

    @RequiresAuthentication
    @PostMapping("/blog/edit")
    public Result edit(@Validated @RequestBody Blog blog) {

//        Assert.isTrue(false, "公开版不能任意编辑!");

        Blog temp = null;
        if(blog.getId() != null) {
            temp = blogService.getById(blog.getId());
            // 只能编辑自己的文章
            System.out.println(ShiroUtil.getProfile().getId());
            Assert.isTrue(temp.getUserId().longValue() == ShiroUtil.getProfile().getId().longValue(), "没有权限编辑");

        } else {

            temp = new Blog();
            temp.setUserId(ShiroUtil.getProfile().getId());
            temp.setCreated(LocalDateTime.now());
            temp.setStatus(0);
        }

        BeanUtil.copyProperties(blog, temp, "id", "userId", "created", "status");
        blogService.saveOrUpdate(temp);

        return Result.succ(null);
    }


}

    

mybatis 实现curd

entity

public class User {

	private Integer userId;

	private String userName;

	private String userPwd;
	
	mapper
	
	
public interface Usermapper {
	public User selectuserbyid(Integer id);


	public User selectUserByName(String userName);

//	注意返回的类型
	public int insertUser(User user);

//	根据id进行删除数据
	public int deleteUserById(int userId);

	//条件查询
	public List<User> selectUserByItem(UserQuery userQuery);
	//修改
	public int updateUser(User user);
}


定义映射mapper.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" >
<mapper namespace="com.liuyang.mapper.Usermapper">
    <select id="selectuserbyid" parameterType="int" resultType="com.liuyang.bean.User">
       select * from t_user where user_id=#{userId}
    </select>
    <select id="selectUserByName" parameterType="String" resultType="com.liuyang.bean.User">
       select * from t_user where user_name=#{userName}
    </select>
    <insert id="insertUser">
        insert into t_user(user_name,user_pwd) values(#{userName},#{userPwd});
    </insert>
    <!--删除一条-->
    <delete id="deleteUserById" parameterType="int">
        delete  from t_user where user_id=#{userId}
    </delete>
    <!--修改-->
    <update id="updateUser">
        update t_user set user_name=#{userName},user_pwd=#{userPwd} where user_id=#{userId}
    </update>
    <!--条件查询-->
    <select id="selectUserByItem" resultType="com.liuyang.bean.User">
        select * from t_user
        <where>
            <if test="userName!=null">
                user_name like "%${userName}%"
            </if>
        </where>
    </select>

</mapper>

数据元配置

## 数据源配置
spring:
  ## 热部署配置
  devtools:
    restart:
      enabled: true
      # 设置重启的目录,添加目录的文件需要restart
      additional-paths: src/main/java
      # 解决项目自动重新编译后接口报404的问题
      poll-interval: 3000
      quiet-period: 1000
  datasource:
    type: com.mchange.v2.c3p0.ComboPooledDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/springboot_mybatis?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8
    username: root
    password: 123456
    ##视图的配置
    freemarker:
      template-loader-path: classpath*:/views/
      charset: UTF-8
      content-type: text/html
      cache: false
      suffix: .ftl

## mybatis 配置
mybatis:
  #映射文件的存放路径
  mapper-locations: classpath*:/mapper/*.xml
  type-aliases-package: com.liuyang.bean,com.liuyang.vo,com.liuyang.query
  configuration:
    ## 下划线转驼峰配置
    map-underscore-to-camel-case: true

## pageHelper
pagehelper:
  helper-dialect: mysql

## 显示dao 执行sql语句
logging:
  level:
    com:
      xxxx:
        mapper: debug
        
service
        
        
public interface Userservice {
	public User queryUserById(Integer userId);
	public User queryUserByName(String userName);
	public void saveUser(User user);
	public void changeUser(User user);
	//删除一条
	public void removeUserById(Integer  userId);

	//查询用户信息
	public PageInfo<User> queryUserByPage(UserQuery userQuery);

}



service实现类



@Service
public class UserserviceImpl implements Userservice {

	@Resource
	private Usermapper usermapper;
//	查询都是用的User返回类型
	@Override
	public User queryUserById(Integer userId) {
		return usermapper.selectuserbyid( userId );
	}

	@Override
	public User queryUserByName(String userName) {
		return usermapper.selectUserByName( userName );
	}
//增加操作
	/***
	 * 	需要用户名 AssertUtil
	 * 	用户密码
	 * 	用户是否存在
	 * 	添加用户是否成功
	 * @param user
	 */
	@Override
	public void saveUser(User user) {
		//验证用户名
		AssertUtil.isTrue( StringUtils.isBlank(user.getUserName()),"用户名不能为空");
		//用户密码
		AssertUtil.isTrue(StringUtils.isBlank(user.getUserPwd()),"用户密码不能为空");
		//用户是否存在
		User temp = usermapper.selectUserByName(user.getUserName());
		AssertUtil.isTrue(temp!=null,"用户已经存在");
		//用户添加是否成功
		AssertUtil.isTrue(usermapper.insertUser(user)<1,"添加失败了");
	}

//	修改操作

	/****
	 * 用户名不为空
	 * 用户密码不为空
	 * 用户不存在
	 * 用户修改操作失败
	 *
	 * @param user
	 */

	@Override
	public void changeUser(User user) {
		AssertUtil.isTrue( StringUtils.isBlank( user.getUserName() ),"用户名不为空" );
		AssertUtil.isTrue( StringUtils.isBlank( user.getUserPwd() ),"密码不为空" );
		User temp = usermapper.selectuserbyid(user.getUserId());
		AssertUtil.isTrue( temp == null,"用户不存在");
		AssertUtil.isTrue( usermapper.updateUser(user)<1,"修改失败了");
	}

	/****
	 * 删除是的id是否还存在
	 * 删除失败
	 * @param userId
	 */
	@Override
	public void removeUserById(Integer userId) {

		AssertUtil.isTrue( userId==null|| null==usermapper.selectuserbyid( userId ),"待删除数据不存在" );
		AssertUtil.isTrue( usermapper.deleteUserById( userId )<1,"删除失败" );
	}

	/**
	 * 分页参数传递了两个变量 一个是起始位置 一个是一页有多行数据
	 *
	 * @param userQuery
	 * @return
	 */
	@Override
	public PageInfo<User> queryUserByPage(UserQuery userQuery) {
		PageHelper.startPage( userQuery.getPageNum(),userQuery.getPageSize());

		List<User> ulist = usermapper.selectUserByItem( userQuery );
		PageInfo<User> plist =new PageInfo<User>(ulist);
		return plist;

	}
}


        
 controller
 
 
 
@RestController
public class Usercontroller {
	@Resource
	private Usermapper usermapper;

	@Resource
	private Userservice userservice;

	@GetMapping("one/{id}")
	public User sayUser(@PathVariable Integer id) {
		System.out.println( id + "<<<" );
		//根据ID查询
		User user = userservice.queryUserById( id );
		return user;
	}
	
	

//	没有检测重复
	@GetMapping("userOne/{name}")
	public User sayUserOne(@PathVariable String name) {
		System.out.println( name + "<<<" );
		//根据ID查询
		User user = userservice.queryUserByName( name );
		//user--json
		return user;
	}
	@PutMapping("add")
	public ResultInfo sayAdd(User user) {
//		把这个类进行的赋值 然后吧值补充道对象中
		ResultInfo result =new ResultInfo();
		System.out.println(user+"<<<");
		try {
			userservice.saveUser( user );
		} catch (ParamException ex) {
			ex.printStackTrace();
			result.setCode( ex.getCode() );
			result.setMsg( ex.getMsg() );
		}catch (Exception ex){
			ex.printStackTrace();
			result.setCode( 300 );
			result.setMsg( "添加异常" );
		}
		return result;
	}
//	更新操作
	@PostMapping("update")
	public ResultInfo sayUpdate(@RequestBody User user){
		ResultInfo result=new ResultInfo();
		System.out.println(user + "<<<");
		try {
			userservice.changeUser( user );
		} catch (ParamException ex) {
			ex.printStackTrace();
			result.setCode( ex.getCode() );
			result.setMsg( ex.getMsg() );
		}catch(Exception ex){
			ex.printStackTrace();
			result.setCode( 300 );
			result.setMsg( "更新异常" );
		}
		return result;
	}

	/**
	 * PathVariable 传过来的id绑定到 userid上
	 * 数据保存到result 返回到service
	 * @param userId
	 * @return
	 */
	@DeleteMapping("delete/{userId}")
	public ResultInfo sayDel(@PathVariable Integer userId) {
		ResultInfo result =new ResultInfo();
		System.out.println( userId + "<<<" );
		try {
			userservice.removeUserById( userId );
		} catch (ParamException ex) {
			ex.printStackTrace();
			result.setCode( ex.getCode() );
			result.setMsg( ex.getMsg() );

		}catch(Exception ex){
			ex.printStackTrace();
			result.setCode( 300 );
			result.setMsg( "删除异常" );
		}
		return result;
	}

	/**
	 * 分页查询 数据库中进行名字的模糊查询
	 *pageNum=null, pageSize=null userName='null'
	 * @param userQuery
	 * @return
	 */
	@GetMapping("query")
	public PageInfo<User> sayDel(UserQuery userQuery) {
		ResultInfo result=new ResultInfo();
		System.out.println( userQuery + "<<<" );
		PageInfo<User> plist =userservice.queryUserByPage( userQuery );
		return plist;
	}

}
        
分页查询实现 需要定义对前端返回的对象进行的封装
public class UserQuery {
	private  Integer pageNum=1;
	private  Integer pageSize=1;
	private  String userName;



捕获全局异常



public class ParamException extends RuntimeException{
	private Integer code=300;
	private String msg="参数异常";
	
	
	
	public class AssertUtil {
	/**
	 *
	 * @param flag 参数
	 * @param msg 信息
	 *            flag=true
	 *              抛出异常,自定义
	 */
	public static void isTrue(Boolean flag,String msg){
		if(flag){
			throw new ParamException(msg);
		}
	}
}


返回结果进行封装

public class ResultInfo {

	private Integer code=200;
	private String msg="操作成功";
	private Object object;


最后在启动类上添加上mapper路径
@SpringBootApplication
//写的是包路径
@MapperScan("com.liuyang.mapper")
public class SpringbootcurdApplication {





  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-02-05 21:35:51  更:2022-02-05 21:38:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:38:52-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码