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>