设计模式-构建者模式
面试题总结
今天面试面试的大概问题
linux系统下常用的命令
java中常用的类
arraylist和linklist的区别产生区别的原因
sq语言的五大分类
where和having的区别
mysqlE的事务隔离级别
orcle和mysql的分野有什么区别
<select id="findByNameCount" resultType="int">
select count(1) from demo
<where>
<if test="name!=null and name!='' and name!='all'">
name like '%'||#{name}||'%'
</if>
</where>
</select>
<select id="findByNameByPageObject"
resultType="com.fcmap.ssm.domain.Demo">
select * from(
SELECT A.*, ROWNUM RN
FROM (
SELECT * FROM DEMO
<where>
<if test="name!=null and name!='' and name!='all'">
and name like '%'||#{name}||'%'
</if>
</where>
) A
WHERE
ROWNUM <![CDATA[ <= ]]>
(#{pageIndex}*#{pageSize})
)
<where>
RN <![CDATA[ >= ]]>
((#{pageIndex}-1)*#{pageSize})+1
</where>
</select>
rest是什么
maven的基本命令有哪些
svn的基本命令有哪些
tomcat的基本命令有哪些
swagger的作用
二叉树和B树B+数结构上的区别
需求
参考 lombok 的链式编程 和 构建者 给对象属性赋值
普通的 set/get 方法赋值
User 类 , 给实例的属性赋值
普通 set/get 方法
public class User {
private Integer id;
private String userName;
private String passWord;
// .... 还有其它很多属性
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassWord() {
return passWord;
}
public void setPassWord(String passWord) {
this.passWord = passWord;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", userName='" + userName + '\'' +
", passWord='" + passWord + '\'' +
'}';
}
}
// 如果 该类属性很多 , 那么会重复写很多代码 , 层次感不是很强
User user = new User();
user.setId(1);
user.setUserName("zhangsan");
user.setPassWord("111111");
链式赋值
参考了 lombok 的 @Accessors(chain = true) 注解
set 方法返回值为当前对象 this
public class User {
private Integer id;
private String userName;
private String passWord;
// .... 还有其它很多属性
public Integer getId() {
return id;
}
public User setId(Integer id) {
this.id = id;
return this;
}
public String getUserName() {
return userName;
}
public User setUserName(String userName) {
this.userName = userName;
return this;
}
public String getPassWord() {
return passWord;
}
public User setPassWord(String passWord) {
this.passWord = passWord;
return this;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", userName='" + userName + '\'' +
", passWord='" + passWord + '\'' +
'}';
}
}
// 使用 链式编程
User user = new User().setId(1).setUserName("zhangsan").setPassWord("111111");
构建者模式
参考了 lombok @Build 注解
通过静态内部类的方式进行属性赋值
public class User {
private Integer id;
private String userName;
private String passWord;
// .... 还有其它很多属性
public User(Integer id, String userName, String passWord) {
this.id = id;
this.userName = userName;
this.passWord = passWord;
}
public static User.UserBuilder builder() {
return new User.UserBuilder();
}
public static class UserBuilder{
private Integer id;
private String userName;
private String passWord;
public User.UserBuilder id(final Integer id){
this.id = id;
return this;
}
public User.UserBuilder userName(final String userName){
this.userName = userName;
return this;
}
public User.UserBuilder passWord(final String passWord){
this.passWord = passWord;
return this;
}
public User build() {
return new User(this.id, this.userName, this.passWord);
}
}
}
// 使用构建者模式 (参考了 lombok 的 @builder 注解)
// 使用了 静态内部类的方式
User user = User.builder().id(1).userName("zhansan").passWord("111111").build();