插入数据库数据,并返回当前主键。
//当执行完插入语句的时候,在执行该语句就可以获得插入数据库的主键。
SELECT @@IDENTITY AS ID;
mybatis的resultType不能处理char类型,只能通过String获取。
解决方式:通过String获取,再转为char类型。
判断是否是图片可以通过高宽来判断。
/**
* 通过读取文件并获取其width及height的方式,来判断判断当前文件是否图片,这是一种非常简单的方式。
*
* @param imageFile
* @return
*/
public static boolean isImage(File imageFile) {
if (!imageFile.exists()) {
return false;
}
Image img = null;
try {
img = ImageIO.read(imageFile);
if (img == null || img.getWidth(null) <= 0 || img.getHeight(null) <= 0) {
return false;
}
return true;
} catch (Exception e) {
return false;
} finally {
img = null;
}
}
thumbnailator API可以操作图片的缩略大小。
//通过原图a.jpg文件,生成缩略图a_thum.jpg
Thumbnails.of(new File("abc/a.jpg"))
.size(200,200)
.toFile(new File("abc/a_thum.jpg"));
像这些文件存储,图片存储,图片缩略图,一般这些东西都会存到文件管理系统上面。常用的文件存储系统像七牛云,阿里oss,腾讯cos。对应这些系统都会有SDK和SDK文档,一步步调用管理就行。
像一些开发中,一般都是有缩略图和原图,像图片显示的时候是缩略图,点开图片是原图。
这些缩略图和原图一般存到服务器本地或者文件存储系统(七牛云,oss,cos)中。
我们的数据库,存储的文件的相对路径或者绝对路径。
使用UUID来解决文件的命名和文件的类型处理:(防止文件冲突)
//springboot文件上传传过来一个multpart的file文件
String fileName = file.getOriginalFilename();
//默认不指定key的情况下,以文件内容的hash值作为文件名 这里的file可以指定七牛云存储的位置。
String name = UUID.randomUUID().toString() + fileName.substring(fileName.lastIndexOf("."));
//File.separator不能在这里使用,七牛云不支持,无法创建目录。
String key = directory + "/" +name;
碰到过三种情况导致@Value获取不到配置值
若依前后台分离的管理系统很方便,拿来即用!
很多功能已经设计好,字典管理,参数管理等等。
可以去官方下载。
若依的自带的后台管理功能有很多:
通过extends继承BaseController,可以拿到当前登录用户的一些信息。
自带的字典管理可以配置很多系统信息,获取字典如下:
@Autowired
private ISysDictTypeService dictTypeService;
@Autowired
private ISysDictDataService dictDataService;
/**
* 根据字典类型查询字典数据信息
*
* @param dictType 字典类型
* @return 参数键值
*/
public List<SysDictData> getType(String dictType)
{
return dictTypeService.selectDictDataByType(dictType);
}
/**
* 根据字典类型和字典键值查询字典数据信息
*
* @param dictType 字典类型
* @param dictValue 字典键值
* @return 字典标签
*/
public String getLabel(String dictType, String dictValue)
{
return dictDataService.selectDictLabel(dictType, dictValue);
}
git clone只能clone远程库的master分支,无法clone所有分支,解决办法如下:
找一个干净目录,假设是git_work
cd git_work
git clone http://myrepo.xxx.com/project/.git ,这样在git_work目录下得到一个project子目录
cd project
git branch -a,列出所有分支名称如下:
remotes/origin/dev
remotes/origin/release
git checkout -b dev origin/dev,作用是checkout远程的dev分支,在本地起名为dev分支,并切换到本地的dev分支
git checkout -b release origin/release,作用参见上一步解释
git checkout dev,切换回dev分支,并开始开发。
case xxx when xxx then … else xxx end的用法
SELECT
s.s_id,
s.s_name,
s.s_sex,
CASE s.s_sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他'
END as sex,
s.s_age,
s.class_id
FROM
t_b_student s
WHERE
1 = 1
MySql数据库优化之LIMIT 1,因为有时候不需要查询多条数据,例如:我想确定数据库中有没有重名的数据,直接设置为limit 1 ,只要查询到1个就说明有重名的,就不用在显示多个了(当然,如果有多个那就说明数据库里面有脏数据)。
linux查看端口占用情况命令:
对于引用数据类型,存储的就是地址。通过地址找到响应数据。数据一般存在堆中(要看java版本):
对形参的修改不会影响到实参,那就行值传递。
对形参的修改能影响到实参,那就是引用传递。
直接理解看着java好像符合引用传递,但是java并不是,因为在栈中存放的是变量,我们声明的对象都存在堆中。栈中的变量存储的是堆中对象的地址,因此看着像引用传递其实不是。
@WebFilter("/*")
@Repository
public class loginFilter implements Filter {
@Autowired
LoginService loginService;
public void init(FilterConfig filterConfig) throws ServletException {
/**
* 由于web应用启动的顺序是:listener>filter>servlet 所以才filter初始化的时候手动添加SpringBean支持。这个是重点的重点!
* 目的就是为了防止上面的Service自动装配能够装配进来。
*/
SpringBeanAutowiringSupport.processInjectionBasedOnServletContext(this, filterConfig.getServletContext());
}
}
@SpringBootApplication(exclude = XXX )可以排除一些自动配置类。
例如: