热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MyBatis基于注解的增删改查示例(SpringIOC注入)

代码:数据模型层packagecom.sunline.entity;importjava.io.Serializable;publicclassUserimplementsSer

 代码:

数据模型层

package com.sunline.entity;import java.io.Serializable;public class User implements Serializable{private Integer user_id;private String user_name;private String user_password;private String user_kind;private Double user_balance;private String user_status;
public Integer getUser_id() {return user_id;
}
public void setUser_id(Integer user_id) {this.user_id = user_id;
}
public String getUser_name() {return user_name;
}
public void setUser_name(String user_name) {this.user_name = user_name;
}
public String getUser_password() {return user_password;
}
public void setUser_password(String user_password) {this.user_password = user_password;
}
public String getUser_kind() {return user_kind;
}
public void setUser_kind(String user_kind) {this.user_kind = user_kind;
}
public Double getUser_balance() {return user_balance;
}
public void setUser_balance(Double user_balance) {this.user_balance = user_balance;
}
public String getUser_status() {return user_status;
}
public void setUser_status(String user_status) {this.user_status = user_status;
}
@Override
public String toString() {return "User [user_id=" + user_id + ", user_name=" + user_name + ", user_password=" + user_password + ", user_kind="+ user_kind + ", user_balance=" + user_balance + ", user_status=" + user_status + "]";
}}



#数据访问层

   @数据操作接口

package com.sunline.dao;import java.util.List;
import java.util.Map;import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.SelectProvider;
import org.apache.ibatis.annotations.Update;
import org.apache.ibatis.annotations.UpdateProvider;import com.sunline.entity.User;public interface UserDao {/** 插入一条用户记录*/@Insert("insert into user(user_name,user_password,user_kind,user_balance,user_status)"+ " values(#{user_name},#{user_password},#{user_kind},#{user_balance},#{user_status})")@Options(useGeneratedKeys = true,keyProperty="id")int SaveUser(User user);/** 删除指定id的用户*/@Delete("delete from user where user_id = #{user_id}")int RemoveUser(@Param("user_id") Integer user_id);/** 修改用户的指定字段*/@Update("update user set user_name = #{user_name}, user_balance = #{user_balance} where user_id = #{user_id}")void ModifyUser(User user);/** 查找所有用户*/@Select("select * from user")List findAll();/** 查找某个id的用户*/@Select("select * from user where user_id = #{user_id}")@Results({@Result(id=true,column="user_id",property="user_id"),@Result(column="user_name",property="user_name"),@Result(column="user_password",property="user_password"),@Result(column="user_kind",property="user_kind"),@Result(column="user_balance",property="user_balance"),@Result(column="user_status",property="user_status")})User findById(int user_id);/** 模糊查询*/@Select("select * from user where user_name like #{user_name} and user_balance >=#{user_balance}")public List findByMoHu(User user);/** 动态SQL查询(有输入的则为查询条件)*/@SelectProvider(type = UserSqlProvider.class, method = "SelectByParam")List findByDyna(Map param);/** 动态SQL修改参数(有输入的则为修改条件)*/@UpdateProvider(type = UserSqlProvider.class, method = "UpdateByParam")void UpdateUser(User user);}


 
@动态SQL生产类

package com.sunline.dao;import java.util.Map;import org.apache.ibatis.jdbc.SQL;import com.sunline.entity.User;public class UserSqlProvider {public String SelectByParam(Map param){return new SQL(){{SELECT("*"); FROM("user");if(param.get("user_id") !=null){WHERE("user_id = #{user_id}");}if(param.get("user_name") !=null){WHERE("user_name = #{user_name}");}if(param.get("user_password") !=null){WHERE("user_password = #{user_password}");}if(param.get("user_kind") !=null){WHERE("user_kind = #{user_kind}");}if(param.get("user_balance") !=null){WHERE("user_balance = #{user_balance}");}if(param.get("user_status") !=null){WHERE("user_status = #{user_status}");}}}.toString();}public String UpdateByParam(User user){return new SQL(){{UPDATE("user");if(user.getUser_name() !=null){SET("user_name = #{user_name}");}if(user.getUser_password() !=null){SET("user_password = #{user_password}");}if(user.getUser_kind() !=null){SET("user_kind = #{user_kind}");}if(user.getUser_balance() !=null){SET("user_balance = #{user_balance}");}if(user.getUser_status() !=null){SET("user_status = #{user_status}");}WHERE("user_id = #{user_id}");}}.toString();}
}



#业务逻辑层

package com.sunline.biz;import java.util.List;
import java.util.Map;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;import com.sunline.dao.UserDao;
import com.sunline.entity.User;@Transactional(propagation=Propagation.REQUIRED,isolation=Isolation.DEFAULT)
@Service("userBiz")
public class UserBiz {/** 自动注入UserDao*/@Autowiredprivate UserDao userDao;/** 添加用户*/public void SaveUser(User user){userDao.SaveUser(user);}/** 删除指定id的用户*/public void DeleteUser(int user_id){userDao.RemoveUser(user_id);}/** 修改用户的指定字段*/public void ModifyUser(User user){userDao.ModifyUser(user);}/** 查找所有用户*/public List findAll(){return userDao.findAll();}/** 根据id查找指定用户*/public User findById(int user_id){return userDao.findById(user_id);}/** 模糊查询*/public List findByMoHu(User user){return userDao.findByMoHu(user);}/** 动态SQL查询(有输入的则为查询条件)*/public List findByDyna(Map param){return userDao.findByDyna(param);}/** 动态SQL修改参数(有输入的则为修改条件)*/public void UpdateUser(User user){userDao.UpdateUser(user);}
}



#测试类

package com.sunline.test;import java.util.HashMap;
import java.util.List;
import java.util.Map;import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;import com.sunline.biz.UserBiz;
import com.sunline.entity.User;public class Test {public static void main(String[] args) {// TODO Auto-generated method stubApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");UserBiz userBiz = (UserBiz) ctx.getBean("userBiz");/** 1.添加用户 */User user = new User();user.setUser_name("张宇");user.setUser_password("123456");user.setUser_kind("客户");user.setUser_status("正常");user.setUser_balance(6500.0);userBiz.SaveUser(user);/** 2.删除指定id的用户*/userBiz.DeleteUser(7);/** 3.修改用户的指定字段*/User user = new User();user.setUser_id(5);user.setUser_name("毛仁");user.setUser_balance(8000.0);userBiz.ModifyUser(user);/** 4.查找所有用户*/List list = userBiz.findAll();for(User user : list){System.out.println("用户信息为: "+user.getUser_name()+" "+user.getUser_password()+" "+user.getUser_status()+" "+user.getUser_kind()+" "+user.getUser_balance());}/** 5.根据id查找用户信息*/User user = userBiz.findById(5);System.out.println("用户信息为: "+user.getUser_name()+" "+user.getUser_password()+" "+user.getUser_status()+" "+user.getUser_kind()+" "+user.getUser_balance());/** 6.模糊查询*/User user = new User();String user_name = "%"+"杨"+"%";double user_balance = 3000.0;user.setUser_name(user_name);user.setUser_balance(user_balance);List list = userBiz.findByMoHu(user);for(User us : list){System.out.println("用户信息为: "+us.getUser_name()+" "+us.getUser_password()+" "+us.getUser_status()+" "+us.getUser_kind()+" "+us.getUser_balance());}/** 7.动态SQL查询(有输入的则为查询条件)*/Map param = new HashMap();param.put("user_name", "杨旭");param.put("user_status", "正常");param.put("user_kind", "客户");List list = userBiz.findByDyna(param);for(User us : list){System.out.println("用户信息为: "+us.getUser_name()+" "+us.getUser_password()+" "+us.getUser_status()+" "+us.getUser_kind()+" "+us.getUser_balance());}/** 8.动态SQL修改参数(有输入的则为修改条件)*/User user = new User();user.setUser_id(5);user.setUser_name("毛仁义");user.setUser_password("1234567");user.setUser_balance(10000.0);userBiz.UpdateUser(user);}}






推荐阅读
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • importjava.util.ArrayList;publicclassPageIndex{privateintpageSize;每页要显示的行privateintpageNum ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 本文介绍了如何使用python从列表中删除所有的零,并将结果以列表形式输出,同时提供了示例格式。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • Day2列表、字典、集合操作详解
    本文详细介绍了列表、字典、集合的操作方法,包括定义列表、访问列表元素、字符串操作、字典操作、集合操作、文件操作、字符编码与转码等内容。内容详实,适合初学者参考。 ... [详细]
author-avatar
haiziqian_486_834
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有