檢測用戶名是否存在,連數據庫並返回前端

Java web項目,老大說加個功能,要能檢測名稱是否在數據庫中存在,沒有的話可以插進去。

之前網上看了幾個帖子都不全,沒有把前後端流程全加進來的,這裏全包含了。

效果如下:

html:

<a class="btn btn-default" id="check" onclick="checkTablename()">檢查表名</a>

js:

<script type="text/javascript">
    function checkTablename(){
        var new_table_name = document.getElementById("new_table_name").value;
        if(new_table_name == "") {
            alert("表名不能爲空");
            return;
        }
        $.ajax({
            type:"POST",
            url:"/base_service/ar_monitor_sql_generate/validateName/ajax",
            data:"new_table_name="+new_table_name,
            success: function (data) {
                if(data == "true")
                    alert("恭喜你!表名沒有被佔用!");
                else {
                    alert("抱歉!表名已存在!");
                }
            }
        });

    }
</script>

後臺部分:

1. domain層定義

public class RerunSqlGenerateInfo extends BaseDomain implements Serializable {

    private String new_table_name ;

    public String getNew_table_name() {
        return new_table_name;
    }

    public void setNew_table_name(String new_table_name) {
        this.new_table_name = new_table_name;
    }
}

1. controller拿到url:

    @RequestMapping(value = "/ar_monitor_sql_generate/validateName/ajax", method = RequestMethod.POST)
    public void checkName(RerunSqlGenerateInfo obj,HttpServletRequest request,HttpServletResponse response) {
        String new_table_name = request.getParameter("new_table_name");
        logger.info("controller " + new_table_name);
        obj.setNew_table_name(new_table_name);
        boolean flag = rerunSqlGenerateInfoService.checkName(obj);
        JsonUtil<RerunSqlGenerateInfo> jsonUtil = new JsonUtil<RerunSqlGenerateInfo>();
        if(flag)
            jsonUtil.writeResponse(response, Boolean.FALSE.toString());
        else{
            jsonUtil.writeResponse(response, Boolean.TRUE.toString());
        }
    }

2. 交給service層處理業務邏輯:

    @Override
    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
    public boolean checkName(RerunSqlGenerateInfo obj) {
        int number = rerunSqlGenerateInfoDao.findTableCount(obj);
        logger.info("tableCount   "+number);
        if(number!=0)
            return true;
        else return false;
    }

3. dao層的映射

 @Override
    public int findTableCount(RerunSqlGenerateInfo obj) {
        return queryCount("com.jd.data.manage.dao.RerunSqlGenerateInfoDao.findTableCount", obj);
    }

4. mybatis裏的sql語句配置:

<mapper namespace="com.jd.data.manage.dao.RerunSqlGenerateInfoDao">
    <select id="findTableCount" parameterType="com.jd.data.manage.domain.RerunSqlGenerateInfo"
                     resultType="java.lang.Integer">
        <if test="new_table_name != null and new_table_name != '' and new_table_name != 'null'">
        <![CDATA[
			 	select count(1) from(
                select tablename from rerun.tablename where tablename = #{new_table_name}
                )a
			]]>
        </if>
    </select>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章