springboot组合springdata jpa增删改查

项目架构目录
maven依赖

 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.6.RELEASE</version>
    </parent>
    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>
       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>
       <dependency>
      <groupId>redis.clients</groupId>
      <artifactId>jedis</artifactId>
     </dependency>
  <dependency> 
      <groupId>net.sf.json-lib</groupId> 
      <artifactId>json-lib</artifactId> 
      <version>2.4</version> 
      <classifier>jdk15</classifier> 
  </dependency>
  
    </dependencies>
   
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork>
                </configuration>
            </plugin>
        </plugins>
    </build>
application.properties配置文件

spring.datasource.url=jdbc:mysql://localhost:3306/XXXX?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# REDIS
spring.redis.database=0
spring.redis.host=X.X.X.X
spring.redis.port=6379
spring.redis.pool.max-active=8
spring.redis.pool.max-wait=-1
spring.redis.pool.max-idle=8
spring.redis.pool.min-idle=0
spring.redis.timeout=0
server.port=80
spring.mvc.static-path-pattern=/**
spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,file:${web.upload-path}
spring.jpa.properties.hibernate.hbm2ddl.auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.show-sql= true

实体类

对于不想在数据库创建的字段要加@Transient注解

springdata关系映射:一对一@OneToOne 
多对一@ManyToOne

@ManyToOne
 @JoinColumn(name="uid")//指定在数据库生成的字段
 private User user;
@ManyToMany //多对多
 @JoinTable(name="tb_order_good",joinColumns= {@JoinColumn(name="oid")},inverseJoinColumns= {@JoinColumn(name="gid")})
 private List<Good> glists;

1.多条件查询
@RequestMapping("/")
 public String toindex(HttpServletRequest request,Order order,Integer tid,Integer sid) {
  User user = (User) request.getSession().getAttribute("user");
  List<Order> olists=orderService.getOrdersList(order,tid,sid);
  List<PayType> plist=orderService.getPayTypesList();
  List<Status> slist=orderService.getStatusList();
  Jedis jedis = jedisPool.getResource();
  String oid = jedis.get("user"+user.getUid());
  if(oid==null) {
   jedis.close();
   request.setAttribute("olists", olists);
   request.setAttribute("order", order);
   request.setAttribute("plists", plist);
   request.setAttribute("slists", slist);
   request.setAttribute("tid", tid);
   request.setAttribute("sid", sid);
   return "index";
  }
  Map<String, String> map=null;
  if(tid==null&&sid==null) {
    if(order.getOid()==""||order.getOid()==null) {
     if(jedis.hgetAll(oid).isEmpty()) {
     }else {
      map = jedis.hgetAll(oid);
     }
    }
    if(order.getOid()==oid) {
     if(jedis.hgetAll(oid).isEmpty()) {
     }else {
      map = jedis.hgetAll(oid);
     }
    }
  }
  jedis.close();
  request.setAttribute("olists", olists);
  request.setAttribute("plists", plist);
  request.setAttribute("slists", slist);
  request.setAttribute("tid", tid);
  request.setAttribute("sid", sid);
  request.setAttribute("map", map);
  request.setAttribute("order", order);
  return "index";
 }
2.多条件查询 可以更灵活一些  调用Specification。其中root.get(key),key值必须和实体类中的字段想对应
如果是模糊查询,调用root.like  有很多方法需要自己去尝试
 public List<Order> getOrdersList(Order order,Integer tid, Integer sid) {
  
      List<Order> list = orderRepository.findAll(new Specification<Order>() {
   @Override
   public Predicate toPredicate(Root<Order> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
    List<Predicate> predicates = new ArrayList<Predicate>();
    if(order!=null) {
     if(!"".equals(order.getOid())&&null!=order.getOid()) {
      predicates.add(cb.equal(root.get("oid"), order.getOid()));  
     }
     if(null!=tid) {
      predicates.add(cb.equal(root.get("payType"), tid));  
     }
     if(null!=sid) {
      predicates.add(cb.equal(root.get("status"), sid));
     }
    }
    query.where(predicates.toArray(new Predicate[predicates.size()])); 
    return null;
   }
   
  });
3.有时候 我们可能需要自写sql语句  比如遇到修改的时候。这时候一定要在service层加事物注解@@Transactional
    @Modifying  //这个注解一定要加 不然报错 
//Order是实体类名字不是数据库表名,同时每个要修改的字段也是实体类  如payType就是实体类属性,同时payType也是一个实体类需要其tid
    @Query(value="update Order o set o.payType.tid=:tid,o.status.sid=:sid where o.oid=:oid")
 void updateOrder(@Param("oid")String oid,@Param("tid")Integer tid,@Param("sid")Integer sid);

4。给大家展示一个主页面  用的bootstrap+freemark
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="bootstrap3/bootstrap.min.css"/>
<script type="text/javascript" src="bootstrap3/jquery.min.js"></script>
<script type="text/javascript" src="bootstrap3/bootstrap.min.js"></script>
<title>Insert title here</title>
</head>
<script type="text/javascript">
    function addorder(){
     location="toaddOrder";
    }
    function todelete(oid){
     alert(oid);
     $.post(
        "deleteOrderByoid",
        {oid:oid},
        function(obj){
         if(obj>0){
          alert("删除成功!");
          location.reload();
         }
        }
       
     );
    }
    function toquery(oid){
     $.post(
             "getOrderByOid",
             {oid:oid},
             function(obj){
              $("#oid1").text(obj.oid);
              $("#name1").text(obj.user.name);
              var time=obj.createtime;
              var da = new Date(time);
              var year = da.getFullYear();
              var month = da.getMonth()+1;
              var date = da.getDate();
              var h=da.getHours();
              var m=da.getMinutes();
              var s=da.getSeconds();
              $("#time1").text(year+"-"+month+"-"+date+"  "+h+":"+m+":"+s);
              $("#sumprice1").text(obj.sumprice);
              $("#pay_type").text(obj.payType.tname);
              $("#statu").text(obj.status.sname);
              var goods=obj.glists;
              $(".tr1").remove();
              for(var i in goods){
               $("#tab1").append("<tr class='tr1'><td>"+goods[i].gid+"</td><td>"+goods[i].gname+"</td><td>"+goods[i].gprice+"</td></tr>");
              }
              $("#myModalLabel").text("订单详情页面");
             },"json"
            );
     $("#myModalLabel1").text("订单详情界面");
     $("#myModal1").modal("show");
    }
    function toPay(oid){
     $.post(
         "getOrderByOid",
         {oid:oid},
         function(obj){
          $("#oid").text(obj.oid);
          $("#name").text(obj.user.name);
          var time=obj.createtime;
          var da = new Date(time);
          var year = da.getFullYear();
          var month = da.getMonth()+1;
          var date = da.getDate();
          var h=da.getHours();
          var m=da.getMinutes();
          var s=da.getSeconds();
          $("#time").text(year+"-"+month+"-"+date+"  "+h+":"+m+":"+s);
          $("#sumprice").text(obj.sumprice);
          $("[name='oid']").val(obj.oid);
          $("#myModalLabel").text("支付界面");
         },"json"
        );
     $("#myModal").modal("show");
    }
    function addRedisOrder(oid){
     $.post(
         "addRedisOrder",{oid:oid},function(obj){
          if(obj>0){
           location.reload();
          }
         } 
     )
    }
</script>
<body>
<div class="container">
<h1>订单展示:</h1>
<form action="/" method="post">
订单编号:<input type="text" name="oid" value="${order.oid!}">
支付类型:<select name="tid">
<option value="">请选择</option>
<#list plists as t>
   <#if tid??>
       <#if tid==t.tid>
          <option value="${t.tid}" selected>${t.tname}</option>
       <#else>
          <option value="${t.tid}">${t.tname}</option>
       </#if>
   <#else>
       <option value="${t.tid}">${t.tname}</option>    
   </#if>
</#list>
</select>
订单状态:<select name="sid">
<option value="">请选择</option>
<#list slists as s>
   <#if sid??> 
     <#if sid==s.sid>
        <option value="${s.sid}" selected>${s.sname}</option>
     <#else>
        <option value="${s.sid}">${s.sname}</option>
     </#if>
   <#else>
     <option value="${s.sid}">${s.sname}</option>
   </#if>
</#list>
</select>
<input type="submit" value="查询" class="btn btn-info">
<input type="button" value="下單" class="btn btn-info" οnclick="addorder()">
</form>
 <table class="table table-bordered table-hover" style="margin-top: 10px">
      <tr class="success">
         <td>订单编号</td>
         <td>订单用户</td>
         <td>购买金额</td>
         <td>创建时间</td>
         <td>支付类型</td>
         <td>订单状态</td>
         <td>操作</td>
      </tr>
      <#list olists as o>
          <tr>
             <td>${o.oid}</td>
             <td>${o.user.name}</td>
             <td>${o.sumprice}</td>
             <td>${o.createtime}</td>
             <td>
             <#if o.payType??>
                 ${o.payType.tname!}
             </#if>
             </td>
             <td>
                 ${o.status.sname}
             </td>
             <td>
               <#if o.status.sname=='已支付'>
                 <input type="button" class="btn btn-primary" value="查看" οnclick="toquery(${o.oid})">
               <#elseif o.status.sname=='待支付'>
                   <input type="button" class="btn btn-info" value="支付" οnclick="toPay(${o.oid})">
                   <input type="button" class="btn btn-primary" value="查看" οnclick="toquery(${o.oid})">
               <#else>
               </#if>
               <input type="button" class="btn btn-danger" value="删除" οnclick="todelete(${o.oid})">
             </td>
          </tr>
      </#list>
      <#if map??>
       <tr>
          <td>${map.oid!}</td>
          <td>${map.name!}</td>
          <td></td>
          <td>${map.data!}</td>
          <td></td>
          <td>${map.pay_type!}</td>
          <td><input type="button" class="btn btn-info" value="提交" οnclick="addRedisOrder(${map.oid!})">
                   <input type="button" class="btn btn-info" value="编辑" οnclick="location='toeditOrder'">
                   <input type="button" class="btn btn-danger" value="删除" οnclick="todelete(${map.oid!})"></td>
       </tr>
      </#if>
     
 </table>
</div>
<!-- 模态框(Modal) -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                <h4 class="modal-title" id="myModalLabel"></h4>
            </div>
            <form action="pay" method="post">
            <div class="modal-body">
                 <input type="hidden" name="oid">
                 <span><span>订单号:<span id="oid"></span></span> &nbsp;&nbsp;&nbsp;&nbsp;  <span>订单用户:<span id="name"></span></span></span><br>
                 <p></p><p></p>
                 <span>订单时间:<span id="time"></span></span>&nbsp;&nbsp;&nbsp;&nbsp;   <span>订单金额:<span id="sumprice"></span></span><br>
                 <p></p><p></p>
                 <span>支付方式:<select name="tid">
                    <option value="">请选择</option>
                  <#list plists as t>
        <option value="${t.tid}">${t.tname}</option>
      </#list></select>
     </span>
                 </div>
            <div class="modal-footer">
                <button type="submit" class="btn btn-primary">支付</button>
                <button type="button" class="btn btn-default" data-dismiss="modal">取消支付</button>
            </div>
            </form>
        </div><!-- /.modal-content -->
    </div><!-- /.modal -->
</div>
<div class="modal fade" id="myModal1" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                <h4 class="modal-title" id="myModalLabel1"></h4>
            </div>
            <div class="modal-body">
                <table class="table table-bordered table-hover" id="tab1">
                   <tr>
                      <td>订单编号</td>
                      <td colspan="2"><span id="oid1"></span></td>
                   </tr>
                   <tr>
                      <td>订单用户</td>
                      <td colspan="2"><span id="name1"></span></td>
                   </tr>
                   <tr>
                      <td>订单金额</td>
                      <td colspan="2"><span id="sumprice1"></span></td>
                   </tr>
                   <tr>
                      <td>订单时间</td>
                      <td colspan="2"><span id="time1"></span></td>
                   </tr>
                   <tr>
                      <td>支付类型</td>
                      <td colspan="2"><span id="pay_type"></span></td>
                   </tr>
                   <tr>
                      <td>订单状态</td>
                      <td colspan="2"><span id="statu"></span></td>
                   </tr>
                   <tr>
                       <td colspan="3">所购商品</td>
                   </tr>
                   <tr>
                      <td>选择</td>
                <td>商品名称</td>
                <td>商品价格</td>
                   </tr>
                </table>
            </div>
            <div class="modal-footer">
            </div>
        </div><!-- /.modal-content -->
    </div><!-- /.modal -->
</div>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Spring Boot中整合Spring Data JPA,可以按照以下步骤进行操作: 1. 添依赖:在项目的pom.xml文件中添Spring Data JPA的依赖。可以使用以下依赖项: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> ``` 2. 配置数据源:在Spring的配置文件中配置数据源,例如application.properties或application.yml文件。根据你使用的数据库类型,配置对应的数据源相关信息,如数据库连接URL、用户名、密码等。 3. 定义实体类:创建与数据库表对应的实体类,并使用JPA注解进行映射。例如,在实体类上使用@Entity注解,指定表名、字段名,以及关系映射等。 4. 创建DAO接口:创建一个继承自JpaRepository或其子接口的DAO接口。这个接口将提供一些常用的CRUD操作方法,无需手动实现。 5. 编写业务逻辑:在Service层中编写业务逻辑代码,并调用DAO接口中定义的方法进行数据访问和操作。 6. 运行程序:启动Spring Boot应用程序,Spring Boot会自动创建数据源、实体类和DAO接口的实现,并根据需要执行数据库操作。 以下是一个简单的示例: 1. 创建实体类: ```java @Entity @Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String name; // getters and setters } ``` 2. 创建DAO接口: ```java public interface UserRepository extends JpaRepository<User, Long> { // 可以在此接口中添自定义的查询方法 } ``` 3. 编写业务逻辑: ```java @Service public class UserService { @Autowired private UserRepository userRepository; public List<User> getAllUsers() { return userRepository.findAll(); } public User getUserById(Long id) { return userRepository.findById(id).orElse(null); } public User saveUser(User user) { return userRepository.save(user); } public void deleteUser(Long id) { userRepository.deleteById(id); } } ``` 通过以上步骤,你就可以在Spring Boot应用程序中使用Spring Data JPA进行数据库访问和操作了。可以通过注入UserService来调用相应的方法,实现对数据库的增删改查操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值