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>