HiSEN

Personal Technology Blog


  • 归档

  • 分类

  • 标签

  • 书单

  • 关于

  • 搜索
close
HiSEN

Mybatis-Generator自动生成dao、model、mapper

发表于 2017-08-02 | 分类于 java

一、配置插件

在resources文件夹下新建:generatorConfig.xml

内容如下:注意修改包名等信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<!--
详细说明请看:http://blog.csdn.net/tiantangpw/article/details/51690534
-->
<generatorConfiguration>

<context id="mysqlgenerator" targetRuntime="MyBatis3">
<!--数据库配置-->
<jdbcConnection connectionURL="jdbc:mysql://127.0.0.1:3306/booksystem"
driverClass="com.mysql.jdbc.Driver"
password="hisen"
userId="root"/>

<!--生成Model(实体类,与数据库字段对应的bean)类存放位置-->
<javaModelGenerator targetPackage="com.hisen.entity" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!--生成映射(xxxmapper.xml)文件存放位置-->
<sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!--生成Dao类存放位置-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.hisen.dao"
targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>

<!--要生成的表-->
<table tableName="appointment"/>
<table tableName="user"/>
</context>

</generatorConfiguration>

二、添加maven插件

阅读全文 »
HiSEN

mybatis - Invalid bound statement (not found)

发表于 2017-08-02 | 分类于 java

运行报错

1
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.hisen.dao.UserMapper.insert

使用mybatis生成插件,产生的mapper,由于路径不对移动了一下mapper.java文件

所以造成mapper.xml里面的namespace错误,无法映射

所以把namespace改为正确的即可

例如:

mapper.UserMapper

改为

com.hisen.dao.UserMapper

HiSEN

为什么要使用队列 - Java

发表于 2017-08-01 | 分类于 java

一、java中的队列:Queue接口

Queue接口与List、Set同一级别,都是继承了Collection接口。LinkedList实现了Queue接口。Queue接口窄化了对LinkedList的方法的访问权限(即在方法中的参数类型如果是Queue时,就完全只能访问Queue接口所定义的方法 了,而不能直接访问 LinkedList的非Queue的方法),以使得只有恰当的方法才可以使用。BlockingQueue 继承了Queue接口。

队列是一种数据结构.它有两个基本操作:在队列尾部加入一个元素,和从队列头部移除一个元素(注意不要弄混队列的头部和尾部)就是说,队列以一种先进先出的方式管理数据,如果你试图向一个 已经满了的阻塞队列中添加一个元素或者是从一个空的阻塞队列中移除一个元索,将导致线程阻塞.在多线程进行合作时,阻塞队列是很有用的工具。工作者线程可以定期地把中间结果存到阻塞队列中而其他工作者线程把中间结果取出并在将来修改它们。队列会自动平衡负载。如果第一个线程集运行得比第二个慢,则第二个 线程集在等待结果时就会阻塞。如果第一个线程集运行得快,那么它将等待第二个线程集赶上来。下表显示了jdk1.5中的阻塞队列的操作:

排序方法平均情况最好情况
add增加一个元素如果队列已满,则抛出一个IllegalSlabEepeplian异常
remove移除并返回队列头部的元素如果队列为空,则抛出一个NoSuchElementException异常
element返回队列头部的元素如果队列为空,则抛出一个NoSuchElementException异常
offer添加一个元素并返回true如果队列已满,则返回false
poll移除并返问队列头部的元素如果队列为空,则返回null
peek返回队列头部的元素如果队列为空,则返回null
put返回队列头部的元素如果队列满,则阻塞
take返回队列头部的元素如果队列为空,则阻塞

二、消息队列

介绍:

消息队列中间件是分布式系统中重要的组件,主要解决应用耦合,异步消息,流量削锋等问题。

实现高性能,高可用,可伸缩和最终一致性架构。

是大型分布式系统不可缺少的中间件。

目前在生产环境,使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等。

场景:异步处理、应用解耦、流量削锋、日志处理


以上就是关于为什么要使用队列的大致说明


参考:

  1. java中队列的使用
  2. 消息队列的使用场景
HiSEN

No MyBatis mapper was found in 'com.xxx.dao' package

发表于 2017-08-01 | 分类于 java

出错

maven项目,启动tomcat的时候报错:

1
No MyBatis mapper was found in '[com.hisen.dao]' package

这是由于把mybatis的mapper配置文件放在了java代码的目录下

目录结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
├── java
│ └── com
│ └── hisen
│ ├── dao
│ │ └── BookDao.java
│ │ └── BookMapper.xml
│ ├── entity
│ │ └── Book.java
│ ├── service
│ │ ├── BookService.java
│ │ └── impl
│ │ └── BookServiceImpl.java
│ └── web
│ └── BookController.java
├── resources
│ ├── jdbc.properties
│ ├── logback.xml
│ ├── mybatis-config.xml
│ └── spring
│ ├── spring-dao.xml
│ ├── spring-service.xml
│ └── spring-web.xml
└── webapp
├── index.jsp
└── WEB-INF
├── jsp
│ ├── detail.jsp
│ └── list.jsp
└── web.xml

出错原因

阅读全文 »
HiSEN

SpringMVC把jsp改为Thymeleaf模版引擎

发表于 2017-08-01 | 分类于 java

Thymeleaf简介

前面的例子我们使用的视图技术主要是JSP。JSP的优点是它是Java EE容器的一部分,几乎所有java EE服务器都支持JSP。缺点就是它在视图表现方面的功能很少,假如我们想迭代一个数组之类的,只能使用<% %>来包括Java语句进行。虽然有标准标签库(JSTL)的补足,但是使用仍然不太方便。另外JSP只能在Java EE容器中使用,如果我们希望渲染电子邮件之类的,JSP就无能为力了。

Java生态圈广泛,自然有很多视图框架,除了JSP之外,还有Freemarker、Velocity、Thymeleaf等很多框架。Thymeleaf的优点是它是基于HTML的,即使视图没有渲染成功,也是一个标准的HTML页面。因此它的可读性很不错,也可以作为设计原型来使用。而且它是完全独立于java ee容器的,意味着我们可以在任何需要渲染HTML的地方使用Thymeleaf。

Thymeleaf也提供了spring的支持,我们可以非常方便的在Spring配置文件中声明Thymeleaf Beans,然后用它们渲染视图。

改造 - 由jsp到Thymeleaf

  1. 引入依赖

    1
    2
    3
    4
    5
    6
    <!--thymeleaf模版 spring4.x-->
    <dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf-spring4</artifactId>
    <version>3.0.5.RELEASE</version>
    </dependency>
  2. 配置ViewResolver(在spring的xml文件里)

    阅读全文 »
HiSEN

Google java工具类 - Guava - 常见用法

发表于 2017-08-01 | 分类于 java

概述

工具类 就是封装平常用的方法,不需要你重复造轮子,节省开发人员时间,提高工作效率。谷歌作为大公司,当然会从日常的工作中提取中很多高效率的方法出来。所以就诞生了Guava。

高效设计良好的API,被Google的开发者设计,实现和使用

遵循高效的java语法实践

使代码更刻度,简洁,简单

节约时间,资源,提高生产力 Guava工程

包含了若干被Google的 Java项目广泛依赖 的核心库,例如:

  1. 集合 [collections]
  2. 缓存 [caching]
  3. 原生类型支持 [primitives support]
  4. 并发库 [concurrency libraries]
  5. 通用注解 [common annotations]
  6. 字符串处理 [string processing]
  7. I/O 等等。

部分用法如下:

阅读全文 »

HiSEN

MySQL update语句

发表于 2017-08-01 | 分类于 sql

刚在一个群里,有人有这么一个需求。

表A:id,name

表B:id,其他,name(新增字段)

A,B表通过id关联,要把A的name给对应的B的name

以前也没有写过这种update语句

1
2
3
4
5
6
update 表名 set 字段名=字段值 where 条件
如 update A set name='xiaoming' where id='';
如果是多表查询
update 表1 a inner join 表2 b on ab表的关联 set a.字段=b.字段
如 update A a inner join B b on a.id=b.id set a.name=b.name
就是在table1表和table2表id相同时 把table2的name值赋给table1的name

HiSEN

Git Bash tree(windows)让windows支持tree

发表于 2017-07-13 | 分类于 linux

在安装了git客户端之后,发现Git Bash挺好用

之前在linux shell用过tree命令感觉不错

发现Git Bash也可以实现,于是就记录一下

下载地址:点击前往

下载文件: Binaries Zip

解压文件:bin目录下找到tree.exe

把这个放到git安装目录下后的路径:C:\Program Files\Git\usr\bin\tree.exe

测试:虽然有点丑。。。

阅读全文 »

HiSEN

Spring Boot CLI 安装(windows)

发表于 2017-07-13 | 分类于 java

SpringBootCLI是一个命令行工具,可用于快速搭建基于spring的原型。

它支持运行Groovy脚本,这也就意味着你可以使用类似Java的语法,但不用写很多的模板代码。

Spring Boot不一定非要配合CLI使用,但它绝对是Spring应用取得进展的最快方式.

下载分发包

  1. 地址:getting-started-installing-the-cli
  2. 下载:spring-boot-cli-x.x.x.RELEASE-bin.zip (例如:spring-boot-cli-1.5.4.RELEASE-bin.zip)
  3. 解压
  4. 设置环境变量:C:\hisenwork\soft\spring-1.5.4.RELEASE\bin (在path中添加)
  5. cmd测试:spring –version
    1
    2
    spring --version
    Spring CLI v1.5.4.RELEASE

运行一个简单程序

阅读全文 »
HiSEN

mongodb - failed with errno13 Permission denied

发表于 2017-07-12 | 分类于 sql

在命令行输入:mongo报错

1
2
3
4
5
hisen@ubuntu:~$ mongo
MongoDB shell version: 3.2.13
connecting to: test
2017-07-11T23:11:23.827+0800 I STORAGE [main] In File::open(), ::open for '/home/hisen/.mongorc.js' failed with errno:13 Permission denied
The ".mongorc.js" file located in your home folder could not be executed

看倒数第二行,应该是权限的问题,于是

1
2
3
4
5
6
7
8
9
10
11
12
hisen@ubuntu:~$ sudo chown -R hisen /home/hisen/.mongorc.js
hisen@ubuntu:~$ mongo
MongoDB shell version: 3.2.13
connecting to: test
Server has startup warnings:
2017-07-11T23:11:15.845+0800 I CONTROL [initandlisten]
2017-07-11T23:11:15.845+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
2017-07-11T23:11:15.845+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2017-07-11T23:11:15.845+0800 I CONTROL [initandlisten]
2017-07-11T23:11:15.845+0800 I CONTROL [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
2017-07-11T23:11:15.845+0800 I CONTROL [initandlisten] ** We suggest setting it to 'never'
2017-07-11T23:11:15.845+0800 I CONTROL [initandlisten]

完美解决,用户权限的问题。

1…141516…27
hisenyuan

hisenyuan

Java R & D

266 日志
33 分类
112 标签
GitHub Weibo
Links
  • 科技爱好者周刊
  • 美团技术团队
  • duanple(老师木)
  • 当然我在扯淡(王垠)
  • 段永平的博客
  • 梦殇国际
© 2016 - 2024 hisenyuan
由 Hexo 强力驱动
您是第  个访问者    |   
主题 - NexT.Mist