设为首页 加入收藏

TOP

你还在用传统的 JDBC 持久化访问吗(一)
2017-12-18 12:37:05 】 浏览:518
Tags:在用 传统 JDBC 持久化 访问

前言

这里我会采用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);
    
    /
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Spring、Spring Boot 和 TestNG .. 下一篇Spring、Spring Boot 和 TestNG ..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目