媒介
这里我会回收mybatis3.2做数据库的耐久化,许多小同伴或者还逗留在老师的辅导下,仍然逗留在利用传统的JDBC耐久化会见数据层。本日,我们来聊聊面向接口编程和怎么充实操作注解的优势!
实现DAO耐久层
从今朝的Java框架趋势来看,spring框架仍旧占据主流,岂论你利用SSH框架和SSM框架开拓,必透彻spring是无可厚非的。
从今朝互联网公司的漫衍来看,昆山软件开发,中小型公司仍旧拥有半壁山河,它们没有雄厚的资金和开拓资源,也就是说少少有公司会利用hibernate+struts开拓项目,对中小型公司来说开拓超大型项目是不在它们的思量范畴之内的。那么,mybatis+springmvc开拓框架就此鼓起…
闲聊竣事,我先说说道理吧:
利用mybatis界说接口完成sql语句的映射,该接口还可以直接作为DAO的组件利用。
桥接模式知道吗?
桥接模式在这里的应用:
利用该模式可以或许浮现业务逻辑组件封装DAO组件的模式,也可以疏散业务逻辑组件和DAO组件的成果。也就是说,业务逻辑组件认真业务逻辑的变革,而DAO组件认真耐久化的变革。
这样做的长处:
①每个DAO组件包括了数据库的会见逻辑。
②每个DAO组件可对一个数据表完成根基的CRUD等操纵。
1.民众常量类
HrmConstants 类
/**
*
* 常量
*
*/
public class HrmConstants {
//数据库表常量
public static final String USERTABLE="user_inf";
public static final String DEPTTABLE="dept_inf";
public static final String JOBTABLE="job_inf";
public static final String EMPLOYEETABLE="employee_inf";
public static final String NOTICETABLE="notice_inf";
public static final String DOCUMENTTABLE="document_inf";
//登录
public static final String LOGIN="loginFrom";
//用户的session工具
public static final String USER_SESSION="user_session";
//默认每页4条数据
public static int PAGE_DEFAULT_SIZE=4;
}
这里数据库我就不贴出来了。这个民众常量类按照数据库表的布局界说得,也就是说在数据库内里我一共建设了6个表,每个表和此类是一一对应的。至于这里的session工具,是为了后期编写节制层所铺垫的,与本次所讲内容无影响噢。
2.实体类
/**
*
* 用户实体类
*
*/
public class User {
private Integer id;//id
private String username;//用户名
private String loginname;//登录名
private String password;//暗码
private Integer status;//状态
private Date createDate;//建档日期
public User() {
}
//setter和getter要领
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 getLoginname() {
return loginname;
}
public void setLoginname(String loginname) {
this.loginname = loginname;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
}
这里,我会以用户实体类做一个案例先容。实体类的根基准则就是遵循javabean法则,昆山软件开发,也就是常说的公有的类、私有的成员变量以及自带一个无参的结构要领。虽然,这里我用了setter和getter要领对其举办了简朴的封装。
3.界说DAO接口
/**
*
* UserDao的接话柄现类
*
*/
public interface UserDao {
//登任命户名和暗码查询员工
@Select("select * from "+USERTABLE+" where loginname = #{loginname} and password = #{password} ")
User selectByLoginnmameAndPassword(
@Param("loginname") String loginname,
@Param("password") String password
);
//按照Id查询用户
@Select("select * from "+USERTABLE+" where id = #{id} ")
User selectById(Integer id);
//按照Id删除用户
@Delete("delete from "+USERTABLE+" where id = #{id} ")
void deleteById(Integer id);
//动态修改用户
@SelectProvider(method = "updateUser", type = UserDynaSqlProvider.class)
void update(User user);
//动态查询
@SelectProvider(method = "selectWhitParam", type = UserDynaSqlProvider.class)
List<User> selectByPage(Map<String, Object> params);
//按照参数查询用户总数
@SelectProvider(method = "count", type = UserDynaSqlProvider.class)
Integer count(Map<String, Object> params);
//动态插入用户
@SelectProvider(method = "inserUser", type = UserDynaSqlProvider.class)
void save(User user);
}