---
# System prepended metadata

title: Java Code Snippets
tags: [CodeSnippets, Java]

---

###### tags: `Java` `CodeSnippets`

# Java Code Snippets
---
**Table Of Contents**
1. Block Comments
    a. Attributes
    b. Constructor
    c. Getter and Setter
    d. Method
    e. Interface
    f. Relationship
2. JSP Template
3. Model File Snippets
    a. Template 
    b. Validation Snippets
    c. Relationship Snippets
4. Repository File Snippets
5. Service File Snippets
6. Controller File Snippets
7. JSP Snippets

## 1. Quick Block Comments

Attributes Label
```
    // ==========================
    //        ATTRIBUTES
    // ==========================
```
Constructor Label
```
    // ==========================
    //        CONSTRUCTOR
    // ==========================
```
Getter and Setter Label
```
    // ==========================
    //     GETTERS / SETTERS
    // ==========================
```
Method Label
```
    // ==========================
    //         METHODS
    // ==========================
```
Interface Label
```
    // ==========================
    //        INTERFACE
    // ==========================
```
Relationship Label
```
    // ==========================
    //        RELATIONSHIPS
    // ==========================
```

## 2. JSP Template

```java!=
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!-- for forms -->
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt" %>
<!-- for validation -->
<%@ page isErrorPage="true" %>
<!DOCTYPE html>
<html>
<head>
<!-- for Bootstrap CSS -->
<link rel="stylesheet" href="/webjars/bootstrap/css/bootstrap.min.css" />
<!-- YOUR own local CSS -->
<link rel="stylesheet" type="text/css" href="/css/style.css">
<!-- For any Bootstrap that uses JS -->
<script src="/webjars/bootstrap/js/bootstrap.min.js"></script>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<header>
		<h1>Hello</h1>
	</header>
</body>
</html>
```

## 3. Model File Snippets


### Base Model File Setup
```java!=
@Entity
@Table(name="classNames")
public class ClassName {
    
    // ==========================
    //        ATTRIBUTES
    // ==========================
    @Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Long id;
    
    // private String <columnName>;

    
    @Column(updatable = false)
	@DateTimeFormat(pattern = "yyy-MM-dd")
	private Date createdAt;
	@DateTimeFormat(pattern = "yyy-MM-dd")
	private Date updatedAt;
    
    // ==========================
    //        RELATIONSHIPS
    // ==========================
    
    
    // ==========================
    //        CONSTRUCTOR
    // ==========================
    
//     Empty Contstuctor
	public <ClassName>() {
		
	}
// <!-- Here you will right click > Source > Generate Constructor Using Feilds > Uncheck id, createdAt and updatedAt  and any NON required fields like in a one to many the one side   -->
// <!-- It should fill in the constructor function     -->
    
// <!-- Here you will right click again > Source > Generate Getters and Setters > Select all -->
// <!-- They will be filled in here     -->
    
    // ==========================
    //     GETTERS / SETTERS
    // ==========================
    @PrePersist
    protected void onCreate() {
        this.createdAt = new Date();
    }
    @PreUpdate
    protected void onUpdate() {
        this.updatedAt = new Date();
    }
}
```

### Model File Validations
For Numbers Only - with our with out custom message
```java!=
@NotNull(message="Must have entry")
@NotNull

@Min(value = 1, message = "Age must be at least 1")
@Min(value = 59, message = "Age must not be more than 50")
```

This will only work for strings with and without custom message
```java!=
@NotEmpty(message="Must have a name")
@NotEmpty
```

For All others including strings
```java!=
@NotBlank
@Size(min=1, max=255, message="Needs to be between 1-255 characters")

@NotBlank(message="Custom message if desired")
```

### Model Relationship Snippets
Make sure that any classes that are connected to more than 1 model... user to bio and user to grade that the bio and grade lowercase class variable is different from each other

One to One - Base (created first)
```java!=
@OneToOne(mappedBy="class", cascade=CascadeType.ALL, fetch=FetchType.LAZY)
    private Class class;
```
One to One - with base_id (created after base)
```java!=
    @OneToOne(fetch=FetchType.LAZY)
    @JoinColumn(name="class_id")
    private Class class; 
```
One to Many - One side
```java!=
@OneToMany(mappedBy="class", fetch = FetchType.LAZY) // this class var in mapped by MUST be the same as the private Class class lowercase var on the many side
	private List<Class> classs; // lowercase should be plural
```
One to Many - Many side
```java!=
@ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name="class_id")
    private Class class; 
```
Many to Many - with 3rd file for middle table
```java!=
// Side 1
@OneToMany(mappedBy="class", fetch=FetchType.LAZY)
private List<ClassClass> classs;

// Middle
// connect Side 1
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="class_id")
    private Class class; 
// connect Side 2
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="class_id")
    private Class class; 

//  Side 2
@OneToMany(mappedBy="class", fetch=FetchType.LAZY)
private List<ClassOtherclass> classs;
```
Many to Many - without extra file
```java!=
// Goes on both 
@ManyToMany(mappedBy="class", fetch=FetchType.LAZY)
@JoinTable(name="classclass"),
joinColumns = @JoinColumn(name="thisClass_id")
    inverseJoinColumns = @JoinColumn(name = "otherClass_id")
    private List<OtherClass> classs

```

## 4. Repository File Snippets

```java!=
@Repository
public interface <>Repository extends CrudRepository<<className>, Long> {
    List<className> findAll();
}

```

## 5. Service File Snippets

```java!=
@Service
public class <>Service {
	@Autowired
	private <>Repository <>Repository;
    
    public List<className> getAll(){
		return <>Repository.fiindAll();
	}
}

```
Crud Template
```java!
// ==========================
//        CRUD METHODS
// ==========================
    // create
    public <MODEL_NAME> createOne(<MODEL_NAME> i) {
        return <repo_name>.save(i);
    }
    // read all 
    public List<<MODEL_NAME>> getAll() {
        return <repo_name>.findAll();
    }
    // read one
    public <MODEL_NAME> getOne(Long id) {
        return <repo_name>.findById(id).orElse(null);
    }
    // update
    public <MODEL_NAME> updateOne(<MODEL_NAME> i) {
        return <repo_name>.save(i);
    }
    // delete
    public void deleteOne(Long id) {
        <repo_name>.deleteById(id);
    }
```

## 6. Controller File Snippets

```java!=
@Controller
public class HomeController {
	@Autowired
	private <>Service <>Service;
	
	@GetMapping("/")
	public String index(@ModelAttribute("className") ClassName className, Model model) {
        
        model.addAttribute("all<className",<>Service.getAll());
		return "index.jsp";
	}
}

```

## 7. JSP Snippets

ForEach - looping through list
```java!=
<c:forEach items="${ all<className> }" var = "<className>">
    <p>${ <className>.<columnName> } </p>
</c:forEach>
```
Table Set up
```java!=
<table>
    <tr>
        <th>Table Header</th>
        <th>Table Header</th>
        <th>Table Header</th>
    </tr>
    <c:forEach items="${ all<className> }" var = "<className>">
        <tr>
            <td>${ <className>.<columnName> }</td>
            <td>${ <className>.<columnName> }</td>
            <td>${ <className>.<columnName> }</td>
        </tr>
    </c:forEach>
</table>
```
Links within for loops (containing id)
```java!=
<a href="/route/${ class.id }/view">View</a>
```