春天的靴子+坚果关于Nutz
Nutz首页
Nutz 可以做什么?
使用NutzDao
<properties>
<java.version>1.8</java.version>
<nutz.version>1.r.66</nutz.version>
</properties>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.nutz</groupId>
<artifactId>nutz</artifactId>
<version>${nutz.version}</version>
</dependency>
server:
port: 8881
context-path: /
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/demo?useUnicode=true&characterEncoding=utf-8&useSSL=false&zeroDateTimeBehavior=convertToNull
username: root
password: 123456
# 配置自定义sql文件的路径
nutz:
paths:
- sqls
package com.wade.demo.config;
import javax.sql.DataSource;
import org.nutz.dao.Dao;
import org.nutz.dao.SqlManager;
import org.nutz.dao.Sqls;
import org.nutz.dao.impl.FileSqlManager;
import org.nutz.dao.impl.NutDao;
import org.nutz.dao.sql.Sql;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import lombok.Data;
@Data
@Configuration
@ConfigurationProperties("nutz")
public class NutzConfig {
// 配置自定义sql文件的路径
private String[] paths;
@Autowired
private DataSource dataSource;
@Bean
@ConditionalOnMissingBean
public SqlManager sqlManager() {
String[] pathsArr = this.paths;
if (pathsArr == null) {
pathsArr = new String[] { "sqls" };
}
return new FileSqlManager(pathsArr);
}
@Bean
public Dao dao() {
NutDao nutDao = new NutDao();
nutDao.setDataSource(dataSource);
nutDao.setSqlManager(sqlManager());
return nutDao;
}
public Sql getQueryRecordSqlByKey(String key) {
return Sqls.queryRecord(dao().sqls().get(key));
}
}
package com.wade.demo.domain.entity;
import java.io.Serializable;
import org.nutz.dao.entity.annotation.Column;
import org.nutz.dao.entity.annotation.Comment;
import org.nutz.dao.entity.annotation.Id;
import org.nutz.dao.entity.annotation.Table;
import lombok.Data;
@Data
@Table("user")
public class User implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
@Id
private Long id;
@Column("open_id")
private String openId;
@Column("username")
private String username;
@Column("password")
private String password;
@Column("salt")
private String salt;
@Column("nickname")
private String nickname;
@Column("phone")
private String phone;
@Column("email")
private String email;
@Column("password_reseted_at")
@Comment("密码最后一次重置时间")
private Long passwordResetedAt;
@Column("password_updated_at")
@Comment("密码最后一次更新时间")
private Long passwordUpdatedAt;
@Column("locked")
@Comment("是否锁定")
private Boolean locked;
@Column("super_admin")
@Comment("是否为超级管理员")
private Boolean superAdmin;
public static final class Field {
public static final String OPENID = "openId";
public static final String USERNAME = "username";
public static final String SALT = "salt";
public static final String NICKNAME = "nickname";
public static final String PHONE = "phone";
public static final String EMAIL = "email";
public static final String LOCKED = "locked";
public static final String SUPER_ADMIN = "superAdmin";
private Field() {
}
}
}
package com.wade.demo.service;
import java.util.List;
import com.wade.demo.domain.entity.User;
public interface UserService {
List<User> listUsers();
}
package com.wade.demo.service.impl;
import java.util.List;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.wade.demo.domain.entity.User;
import com.wade.demo.service.UserService;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private Dao dao;
@Override
public List<User> listUsers() {
return dao.query(User.class, Cnd.where("deleted_at", "=", 0));
}
}
package com.wade.demo.web;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.wade.demo.domain.entity.User;
import com.wade.demo.service.UserService;
@RestController
@RequestMapping("/api/v1/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("")
public List<User> listUsers() {
return userService.listUsers();
}
}


/*
get.by.id
*/
SELECT username FROM user WHERE id = @id
package com.wade.demo.service;
import java.util.List;
import com.wade.demo.domain.entity.User;
public interface UserService {
List<User> listUsers();
User getById(long id);
}
package com.wade.demo.service.impl;
import java.util.List;
import org.nutz.dao.Cnd;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.sql.Sql;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.wade.demo.domain.entity.User;
import com.wade.demo.domain.entity.User.Field;
import com.wade.demo.service.UserService;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private Dao dao;
@Override
public List<User> listUsers() {
return dao.query(User.class, Cnd.where("deleted_at", "=", 0));
}
@Override
public User getById(long id) {
Sql sql = Sqls.queryRecord(dao.sqls().get("get.by.id"));
sql.setParam(Field.ID, id);
return dao.execute(sql).getObject(User.class);
}
}
package com.wade.demo.web;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.wade.demo.domain.entity.User;
import com.wade.demo.service.UserService;
@RestController
@RequestMapping("/api/v1/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("")
public List<User> listUsers() {
return userService.listUsers();
}
@GetMapping("/{id:\\d+}")
public User getById(@PathVariable("id") long id) {
return userService.getById(id);
}
}
