在搭建简单的demo程序时 出现如上报错问题, 经查询得出 关于idea 中使用mybastis报出 Invalid bound statement (not found)的错误解决方案 mapper.xml没有按照传统的maven架构进行放置 在pom.xml文件中配置build扫描目录就可以
在查询sql语句返回string集和的时候 以为返回值是list
通过maven来设置。启动成功,然而程序没法进行调试 打断点进不去程序里。
org.springframework.boot
spring-boot-maven-plugin
false
添加
做前后分离的webapp开发的时候,出于一些原因往往需要将浏览器设置成支持跨域的模式,好在chrome浏览器就是支持可跨域的设置,网上也有很多chrome跨域设置教程。但是新版本的chrome浏览器提高了跨域设置的门槛,原来的方法不再适用了。下面笔者简单介绍一下新版本chrome的跨域设置方法。
先介绍一下老方法,参考了一些网上的教程,其实直接在打开命令上加--disable-web-security就可以了。
具体做法为:
chrome的版本升到49之后,跨域设置比以前严格了,在打开命令上加--disable-web-security之后还需要给出新的用户个人信息的目录。众所周知chrome是需要用gmail地址登录的浏览器,登录后就会生成一个存储个人信息的目录,保存用户的收藏、历史记录等个人信息。49版本之后,如果设置chrome浏览器为支持跨域模式,需要指定出一个个人信息目录,而不能使用默认的目录,估计是chrome浏览器怕用户勿使用跨域模式泄露自己的个人信息(主要是cookie,很多网站的登录token信息都是保存在cookie里)。
具体做法为:
1.在电脑上新建一个目录,例如:C:\MyChromeDevUserData
2.在属性页面中的目标输入框里加上 --disable-web-security --user-data-dir=C:\MyChromeDevUserData,--user-data-dir的值就是刚才新建的目录。
3.点击应用和确定后关闭属性页面,并打开chrome浏览器。
再次打开chrome,发现有“--disable-web-security”相关的提示,说明chrome又能正常跨域工作了。
跨域成功后,首页换成了google的welcome页面,同时原来收藏的链接和历史记录都不见了,而C:\MyChromeDevUserData目录下则生成了新的个人信息相关的文件。
设置了sql字段 art_comment 存储文件服务器地址 不设置将其存储文件内容
def test():
s= "你好我我是你爸爸3哈哈哈2213将131313131的撒谎的撒谎的撒肯定撒空间l/s/w/z.,.,..j"
mypattern = re.compile('[\u4e00-\u9fa5]+')
rss = mypattern.findall(s)
rss = "".join(rss)
print(len(rss))
if __name__ == '__main__':
test()
# -*- coding: utf-8 -*-
import os
def file_name(file_dir):
for root, dirs, files in os.walk(file_dir):
print(root) #当前目录路径
print(dirs) #当前路径下所有子目录
print(files) #当前路径下所有非目录子文件
for root, dirs, files in os.walk(file_dir):
print(root) #当前目录路径
print(dirs) #当前路径下所有子目录
for name in files:
# print(name)
if name not in filenames:
print(name)
os.remove(os.path.join("F:\\New folder1"+"\\"+name))
# print(files) #当前路径下所有非目录子文件
if __name__ == '__main__':
file_name("F:\\New folder1");
outname = "检索的"
提示报这个错误是
@OneToMany(mappedBy = "type") mappedBy对应的是 one表中定义的字段 当时是types 没法找到该字段 所以报错
本篇介绍Query类,Query是一个查询参数类,封装了查询条件,分页,排序等功能。
https://blog.csdn.net/thc1987/article/details/79347054
https://blog.csdn.net/renanrenan/article/details/84654362
https://hollis.blog.csdn.net/article/details/104322534
使用mybatis传入参数,如果在mappin.xml中使用
接口:
public interface UserMapper {
//根据名称查询用户
List
}
mapping.xml:
--------------------------------------------------------------------------------------
springSecurity
spring-boot-starter-test
编写SecurityConfig 配置文件
extends
WebSecurityConfigurerAdapter
package com.springSecurity.config;
import org.apache.tomcat.util.security.MD5Encoder;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
//AOP 拦截器
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
//授权
@Override
protected void configure(HttpSecurity http) throws Exception {
//首页可以访问,功能页只有对应有权限的人才可以访问。
//请求授权的规则
http.authorizeRequests()
.antMatchers("/").permitAll()
// .antMatchers("/views/level1/**").hasRole("vip1") 这样设置url地址错误
.antMatchers("/level1/**").hasRole("vip1")
.antMatchers("/level2/**").hasRole("vip2")
.antMatchers("/level3/**").hasRole("vip3");
//设置没有权限会跳到登陆页面,需要开启登陆的页面 而且这个页面的名字是指定的,且默认设置请求转到/login 继而转到login.html页面
//
//定制登陆页
//toLogin是首页的登陆发送的请求地址, login.html中login是登陆页表单提交发送的请求地址 要和下面securityconfig-http.forLogin设置的一致
//
http.formLogin().usernameParameter("usr") //这里设置usernameParameter是前端表单提交传参名称 默认是username
.passwordParameter("pwd")
.loginProcessingUrl("/login");
//防止网站攻击, springboot默认开启了
http.csrf().disable(); //关闭crsf功能 登出失败可能存在的原因
//注销 开启注销功能 跳到首页
http.logout().logoutSuccessUrl("/");
//开启rememberMe 实质上是把用户名和密码添加到cookie中去了 默认保存两周
//自定义rememberMe
http.rememberMe().rememberMeParameter("remember");
}
//认证 springboot 2.1.x可以直接使用 其他版本会报错: There is no PasswordEncoder mapped for the id "null"
//密码编码 PasswordEncoder
//在spring Security 5.0+中增加了很多的加密方式 明文密码不安全。如下面的123456
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
//可以从数据库里获取 信息认证 也可以从内存中获取信息认证
//这些数据正常从数据库中读
auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder())
.withUser("zhiqiang").password(new BCryptPasswordEncoder().encode("123456")).roles("vip2","vip3")
.and()
// .withUser("root").password("123456").roles("vip1","vip2","vip3")
//上述代码明文密码没有添加passwordEncoder.encode
.withUser("root").password(new BCryptPasswordEncoder().encode("123456")).roles("vip1","vip2","vip3")
.and()
.withUser("guest").password(new BCryptPasswordEncoder().encode("123456")).roles("vip1");
}
}
mapper文件中 少加了一个,逗号
jquery设置:$("#id").attr("disabled","disabled"); $("#id").removeAttr("disabled");
@Lob
@Column(columnDefinition="TEXT")
public String getImgUrls() {
return imgUrls;
}
public void setImgUrls(String imgUrls) {
this.imgUrls = imgUrls;
}
获取html 标签的属性值
获取html 标签的属性值分另种情况
其一,获取原有属性,其方法是.属性
其二:获取自定义属性方法:其方法是.getAttribute(‘属性’)或.attributes(‘属性’).nodeValue
①var user_id = document.getElementById('user_id').value;
②var user_id = $('#user_id').val();
单向就是java的一个实体类可以获取另一个实体类,多对一就是比如多个员工对应一个部门,外键在那个表,那个表就是多,关系配在多方。`
//员工实体类
@Entity//将实体类映射到数据库表
public class Employee extends BaseDomain {
private String username;
private String password;
private String email;
private Integer age;
private String headImage; //头像
//多个员工对应一个部门 多对一配置到多方
//单向就是java的一个实体类可以获取另一个实体类
//外键在那个表,那个表就是多,外键在Employee类,所以Employee是多方
@ManyToOne(fetch = FetchType.LAZY)//配置懒加载
//员工关联部门自己的部门id字段
@JoinColumn(name="department_id")
//部门类
private Department department;
11.当入参为 string类型时 (包括java.lang.String.) 我们使用#{xxx}引入参数.会抛异常There is no getter for property named 'XXX' in 'class java.lang.String'
2.解决方法一:把#{xxx}修改为 #{_parameter} 即可
3.解决方法二:可以在方法中提前定义:
public int methodName(@Param(value="state") String state ){
...
}
4.原因:Mybatis默认采用OGNL解析参数,所以会自动采用对象树的形式取 string.xxx 值,如果没在在方法中定义,则会抛异常报错。
https://blog.csdn.net/qing_gee/article/details/47122227
遇到这个错误就是把参数int 改成Integer
这个错误是因为java获取页面数据的时候,id值可能为空,而int的默认值为0,若想能够接受NULL的值,将int换成integer即可解决。
遇到这个错误就是把参数int 改成Integer
大家以后在springmvc接受参数的时候,尽量不要使用基本数据类型,当然你一定要使用的话,可以把defaultValue加上,这样就不会报这个错误了。
注意:就算你加上required=false, 一样也是不行的。
需求:客户端通过传递pageNum(页码)和pageSize(每页显示的条数)两个参数去分页查询数据库表中的数据。
我们知道MySQL提供了分页函数limit m,n,但是该函数的用法和需求不一样,所以就需要根据实际情况去改写以满足需求。分析如下:
查询第1条到第10条数据的sql是:select * from table limit 0,10; ->对应我们的需求就是查询第一页的数据:select * from table limit (1-1)*10,10;
查询第10条到第20条数据的sql是:select * from table limit 10,20; ->对应我们的需求就是查询第二页的数据:select * from table limit (2-1)*10,10;
查询第20条到第30条数据的sql是:select * from table limit 20,30; ->对应我们的需求就是查询第三页的数据:select * from table limit (3-1)*10,10;
通过上面的分析,可以归纳得出符合需求的分页SQL伪代码是:select * from table limit (pageNum-1)*pageSize,pageSize。总而言之,我们只需要告诉数据库要从第几行开始拿多少条数据就行了。
但是,limit语句不支持计算,因此,需要从外部传参(pageNum-1)*pageSize的计算结果,即在Java中计算出来。令rowIndex = (pageNum-1)*pageSize,rowIndex常用的计算方法如下:
//计算行号
public static int getRowIndex(int pageNum, int pageSize){
return (pageNum> 0) ? (pageNum- 1) * pageSize : 0;
}
limit只是限制条数 要翻页的话 要 (offsize-1)* 10
{field: 'pressTime', title: '发稿时间', width:180,
templet:'{{ layui.util.toDateString(d.pressTime, "yyyy-MM-dd HH:mm:ss") }}'}
There was an unexpected error (type=Internal Server Error, status=500). Error attempting to get column 'type' from result set. Cause: java.sql.SQLDataException: Cannot determine value type from string '222-2-21' ; Cannot determine value type from string '222-2-21'; nested exception is java.sql.SQLDataException: Cannot determine value type from string '201577D0510' org.springframework.dao.DataIntegrityViolationException: Error attempting to get column 'u_account' from result set. Cause: java.sql.SQLDataException: Cannot determine value type from string '201577D0510' ; Cannot determine value type from string '201577D0510'; nested exception is java.sql.SQLDataException: Cannot determine value type from string '201577D0510' at org.springframework.jdbc.support.SQLExceptionSubclassTranslator.doTranslate(SQLExceptionSubclassTranslator.java:84) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72) at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:81) at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:73) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:446) at com.sun.proxy.$Proxy65.selectList(Unknown Source)
查看字段和属性都没有问题。
最后尝试建立无参构造函数解决问题。缺少了mapper层封装对象时与之查询字段一一对应的实体类构造器
添加一个构造器,问题解决
为某个标签加样式,是鼠标悬浮变小手:
cursor:pointer; 变小手
text-decoration:none; 没有下划线
一已经有重复的id