121 项目 034 笔记向 easyui

pom

1<?xml version="1.0" encoding="UTF-8"?> 2<project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5 <modelVersion>4.0.0</modelVersion> 6 7 <groupId>com.laolang.jc.one</groupId> 8 <artifactId>jcone-parent</artifactId> 9 <version>1.0-SNAPSHOT</version> 10 <packaging>pom</packaging> 11 12 <!-- 集中定义依赖版本号 --> 13 <properties> 14 <!-- test --> 15 <junit.version>4.10</junit.version> 16 <hamcrest.version>1.3</hamcrest.version> 17 18 19 <!-- java ee --> 20 <javaee-api.version>7.0</javaee-api.version> 21 <servlet-api.version>3.0.1</servlet-api.version> 22 <persistence-api.version>1.0</persistence-api.version> 23 <jstl.version>1.2</jstl.version> 24 <standard.version>1.1.2</standard.version> 25 26 27 <!-- spring --> 28 <spring.version>4.2.0.RELEASE</spring.version> 29 30 <!-- mybatis --> 31 <mybatis.version>3.2.8</mybatis.version> 32 <mybatis.spring.version>1.2.2</mybatis.spring.version> 33 <mybatis.paginator.version>1.2.15</mybatis.paginator.version> 34 <pagehelper.version>4.0.3</pagehelper.version> 35 <tk.mapper.version>3.2.2</tk.mapper.version> 36 37 38 <mysql.version>5.1.32</mysql.version> 39 40 <!-- log --> 41 <slf4j.version>1.7.12</slf4j.version> 42 <logback.version>1.1.3</logback.version> 43 <logback.ext.version>0.1.2</logback.ext.version> 44 45 <!-- json --> 46 <jackson.version>2.4.2</jackson.version> 47 <jackson.mapper.version>1.9.13</jackson.mapper.version> 48 49 <!-- google --> 50 <gson.version>2.2.2</gson.version> 51 <guava.version>18.0</guava.version> 52 53 <!-- alibaba --> 54 <druid.version>1.0.12</druid.version> 55 56 <!-- apache --> 57 <httpclient.version>4.5</httpclient.version> 58 <commons-lang3.version>3.3.2</commons-lang3.version> 59 <commons-io.version>2.5</commons-io.version> 60 <commons-fileupload.version>1.3.2</commons-fileupload.version> 61 <commons-net.version>3.3</commons-net.version> 62 <commons-codec.version>1.9</commons-codec.version> 63 64 <!-- beetl --> 65 <beetl.version>2.7.5</beetl.version> 66 67 <!-- jedis --> 68 <jedis.version>2.6.3</jedis.version> 69 70 <!-- JSR 303 --> 71 <hibernate-validator.version>5.1.3.Final</hibernate-validator.version> 72 <validator-api.version>1.1.0.Final</validator-api.version> 73 74 <joda-time.version>2.5</joda-time.version> 75 76 <cglib.versoin>3.1</cglib.versoin> 77 78 <quartz.versoin>2.2.1</quartz.versoin> 79 80 <spring-rabbit.version>1.4.0.RELEASE</spring-rabbit.version> 81 82 </properties> 83 84 <dependencyManagement> 85 <dependencies> 86 <!-- test --> 87 <dependency> 88 <groupId>junit</groupId> 89 <artifactId>junit</artifactId> 90 <version>${junit.version}</version> 91 <scope>test</scope> 92 </dependency> 93 <dependency> 94 <groupId>org.hamcrest</groupId> 95 <artifactId>hamcrest-all</artifactId> 96 <version>${hamcrest.version}</version> 97 <scope>test</scope> 98 </dependency> 99 100 <!-- java ee--> 101 <dependency> 102 <groupId>javax</groupId> 103 <artifactId>javaee-api</artifactId> 104 <version>${javaee-api.version}</version> 105 <scope>provided</scope> 106 </dependency> 107 <dependency> 108 <groupId>javax.servlet</groupId> 109 <artifactId>javax.servlet-api</artifactId> 110 <version>${servlet-api.version}</version> 111 <scope>provided</scope> 112 </dependency> 113 <dependency> 114 <groupId>javax.persistence</groupId> 115 <artifactId>persistence-api</artifactId> 116 <version>1.0</version> 117 </dependency> 118 <dependency> 119 <groupId>jstl</groupId> 120 <artifactId>jstl</artifactId> 121 <version>${jstl.version}</version> 122 </dependency> 123 <dependency> 124 <groupId>taglibs</groupId> 125 <artifactId>standard</artifactId> 126 <version>${standard.version}</version> 127 </dependency> 128 129 <!-- Spring --> 130 <dependency> 131 <groupId>org.springframework</groupId> 132 <artifactId>spring-context</artifactId> 133 <version>${spring.version}</version> 134 </dependency> 135 <dependency> 136 <groupId>org.springframework</groupId> 137 <artifactId>spring-oxm</artifactId> 138 <version>${spring.version}</version> 139 </dependency> 140 <dependency> 141 <groupId>org.springframework</groupId> 142 <artifactId>spring-tx</artifactId> 143 <version>${spring.version}</version> 144 </dependency> 145 <dependency> 146 <groupId>org.springframework</groupId> 147 <artifactId>spring-jdbc</artifactId> 148 <version>${spring.version}</version> 149 </dependency> 150 <dependency> 151 <groupId>org.springframework</groupId> 152 <artifactId>spring-beans</artifactId> 153 <version>${spring.version}</version> 154 </dependency> 155 <dependency> 156 <groupId>org.springframework</groupId> 157 <artifactId>spring-aop</artifactId> 158 <version>${spring.version}</version> 159 </dependency> 160 <dependency> 161 <groupId>org.springframework</groupId> 162 <artifactId>spring-test</artifactId> 163 <version>${spring.version}</version> 164 </dependency> 165 <dependency> 166 <groupId>org.springframework</groupId> 167 <artifactId>spring-aspects</artifactId> 168 <version>${spring.version}</version> 169 </dependency> 170 <dependency> 171 <groupId>org.springframework</groupId> 172 <artifactId>spring-web</artifactId> 173 <version>${spring.version}</version> 174 </dependency> 175 <dependency> 176 <groupId>org.springframework</groupId> 177 <artifactId>spring-webmvc</artifactId> 178 <version>${spring.version}</version> 179 </dependency> 180 <dependency> 181 <groupId>org.springframework</groupId> 182 <artifactId>spring-core</artifactId> 183 <version>${spring.version}</version> 184 </dependency> 185 186 <!-- JSR 303 --> 187 <dependency> 188 <groupId>javax.validation</groupId> 189 <artifactId>validation-api</artifactId> 190 <version>${validator-api.version}</version> 191 </dependency> 192 193 <dependency> 194 <groupId>org.hibernate</groupId> 195 <artifactId>hibernate-validator</artifactId> 196 <version>${hibernate-validator.version}</version> 197 </dependency> 198 199 200 <!-- beetl --> 201 <dependency> 202 <groupId>com.ibeetl</groupId> 203 <artifactId>beetl</artifactId> 204 <version>${beetl.version}</version> 205 </dependency> 206 207 <!-- Mybatis --> 208 <dependency> 209 <groupId>org.mybatis</groupId> 210 <artifactId>mybatis</artifactId> 211 <version>${mybatis.version}</version> 212 </dependency> 213 <dependency> 214 <groupId>org.mybatis</groupId> 215 <artifactId>mybatis-spring</artifactId> 216 <version>${mybatis.spring.version}</version> 217 </dependency> 218 <dependency> 219 <groupId>com.github.pagehelper</groupId> 220 <artifactId>pagehelper</artifactId> 221 <version>${pagehelper.version}</version> 222 </dependency> 223 <dependency> 224 <groupId>tk.mybatis</groupId> 225 <artifactId>mapper</artifactId> 226 <version>${tk.mapper.version}</version> 227 </dependency> 228 229 230 <!-- MySql --> 231 <dependency> 232 <groupId>mysql</groupId> 233 <artifactId>mysql-connector-java</artifactId> 234 <version>${mysql.version}</version> 235 </dependency> 236 237 <!-- alibaba --> 238 <dependency> 239 <groupId>com.alibaba</groupId> 240 <artifactId>druid</artifactId> 241 <version>${druid.version}</version> 242 </dependency> 243 244 <!-- Jackson Json处理工具包 --> 245 <dependency> 246 <groupId>org.codehaus.jackson</groupId> 247 <artifactId>jackson-mapper-asl</artifactId> 248 <version>${jackson.mapper.version}</version> 249 </dependency> 250 <dependency> 251 <groupId>com.fasterxml.jackson.core</groupId> 252 <artifactId>jackson-core</artifactId> 253 <version>${jackson.version}</version> 254 </dependency> 255 <dependency> 256 <groupId>com.fasterxml.jackson.core</groupId> 257 <artifactId>jackson-databind</artifactId> 258 <version>${jackson.version}</version> 259 </dependency> 260 <dependency> 261 <groupId>com.fasterxml.jackson.core</groupId> 262 <artifactId>jackson-annotations</artifactId> 263 <version>${jackson.version}</version> 264 </dependency> 265 266 <!-- google --> 267 <dependency> 268 <groupId>com.google.code.gson</groupId> 269 <artifactId>gson</artifactId> 270 <version>${gson.version}</version> 271 </dependency> 272 <dependency> 273 <groupId>com.google.guava</groupId> 274 <artifactId>guava</artifactId> 275 <version>${guava.version}</version> 276 </dependency> 277 278 <!-- apache --> 279 <dependency> 280 <groupId>org.apache.commons</groupId> 281 <artifactId>commons-lang3</artifactId> 282 <version>${commons-lang3.version}</version> 283 </dependency> 284 <dependency> 285 <groupId>commons-io</groupId> 286 <artifactId>commons-io</artifactId> 287 <version>${commons-io.version}</version> 288 </dependency> 289 <dependency> 290 <groupId>commons-fileupload</groupId> 291 <artifactId>commons-fileupload</artifactId> 292 <version>${commons-fileupload.version}</version> 293 </dependency> 294 <dependency> 295 <groupId>org.apache.httpcomponents</groupId> 296 <artifactId>httpclient</artifactId> 297 <version>${httpclient.version}</version> 298 </dependency> 299 <dependency> 300 <groupId>commons-net</groupId> 301 <artifactId>commons-net</artifactId> 302 <version>${commons-net.version}</version> 303 </dependency> 304 <dependency> 305 <groupId>commons-codec</groupId> 306 <artifactId>commons-codec</artifactId> 307 <version>${commons-codec.version}</version> 308 </dependency> 309 310 <!-- logback --> 311 <dependency> 312 <groupId>org.slf4j</groupId> 313 <artifactId>slf4j-api</artifactId> 314 <version>${slf4j.version}</version> 315 </dependency> 316 <dependency> 317 <groupId>org.slf4j</groupId> 318 <artifactId>jcl-over-slf4j</artifactId> 319 <version>${slf4j.version}</version> 320 </dependency> 321 <dependency> 322 <groupId>ch.qos.logback</groupId> 323 <artifactId>logback-core</artifactId> 324 <version>${logback.version}</version> 325 </dependency> 326 <dependency> 327 <groupId>ch.qos.logback</groupId> 328 <artifactId>logback-classic</artifactId> 329 <version>${logback.version}</version> 330 </dependency> 331 <dependency> 332 <groupId>org.logback-extensions</groupId> 333 <artifactId>logback-ext-spring</artifactId> 334 <version>${logback.ext.version}</version> 335 </dependency> 336 337 338 <!-- 时间操作组件 --> 339 <dependency> 340 <groupId>joda-time</groupId> 341 <artifactId>joda-time</artifactId> 342 <version>${joda-time.version}</version> 343 </dependency> 344 345 <!-- jedis --> 346 <dependency> 347 <groupId>redis.clients</groupId> 348 <artifactId>jedis</artifactId> 349 <version>${jedis.version}</version> 350 </dependency> 351 352 <!-- 动态代理 --> 353 <dependency> 354 <groupId>cglib</groupId> 355 <artifactId>cglib</artifactId> 356 <version>${cglib.versoin}</version> 357 </dependency> 358 359 <!-- quartz --> 360 <dependency> 361 <groupId>org.quartz-scheduler</groupId> 362 <artifactId>quartz</artifactId> 363 <version>${quartz.versoin}</version> 364 </dependency> 365 366 <!-- RabbitMQ --> 367 <dependency> 368 <groupId>org.springframework.amqp</groupId> 369 <artifactId>spring-rabbit</artifactId> 370 <version>${spring-rabbit.version}</version> 371 </dependency> 372 373 374 </dependencies> 375 </dependencyManagement> 376 377 <build> 378 <finalName>${project.artifactId}</finalName> 379 <plugins> 380 <!-- 资源文件拷贝插件 --> 381 <plugin> 382 <groupId>org.apache.maven.plugins</groupId> 383 <artifactId>maven-resources-plugin</artifactId> 384 <version>2.7</version> 385 <configuration> 386 <encoding>UTF-8</encoding> 387 </configuration> 388 </plugin> 389 <!-- java编译插件 --> 390 <plugin> 391 <groupId>org.apache.maven.plugins</groupId> 392 <artifactId>maven-compiler-plugin</artifactId> 393 <version>3.2</version> 394 <configuration> 395 <source>1.7</source> 396 <target>1.7</target> 397 <encoding>UTF-8</encoding> 398 </configuration> 399 </plugin> 400 </plugins> 401 <pluginManagement> 402 <plugins> 403 <!-- 配置Tomcat插件 --> 404 <plugin> 405 <groupId>org.apache.tomcat.maven</groupId> 406 <artifactId>tomcat7-maven-plugin</artifactId> 407 <version>2.2</version> 408 </plugin> 409 </plugins> 410 </pluginManagement> 411 </build> 412</project>

java

bean

BaseDomain

1package com.laolang.jc.one.manage.domain; 2 3import java.util.Date; 4 5/** 6 * 实体类基类 7 * @author laolang2016 8 * @version 1.0 9 */ 10public class BaseDomain { 11 12 /** 13 * 创建时间 14 */ 15 protected Date created; 16 17 /** 18 * 最后更新时间 19 */ 20 protected Date updated; 21 22 public Date getCreated() { 23 return created; 24 } 25 public void setCreated(Date created) { 26 this.created = created; 27 } 28 public Date getUpdated() { 29 return updated; 30 } 31 public void setUpdated(Date updated) { 32 this.updated = updated; 33 } 34}

Employee

1package com.laolang.jc.one.manage.domain; 2 3import org.springframework.format.annotation.DateTimeFormat; 4 5import java.util.Date; 6 7import javax.persistence.*; 8 9/** 10 * 员工实体类 11 * @author laolang2016 12 * @version 1.0 13 */ 14@Table(name = "tb_employee") 15public class Employee extends BaseDomain { 16 17 public Employee() { 18 } 19 20 @Override 21 public String toString() { 22 return "Employee{" + 23 "id=" + id + 24 ", loginNumber='" + loginNumber + '\'' + 25 ", name='" + name + '\'' + 26 ", sex=" + sex + 27 ", pwd='" + pwd + '\'' + 28 ", birthday=" + birthday + 29 ", city='" + city + '\'' + 30 ", phone='" + phone + '\'' + 31 ", lead=" + lead + 32 ", created=" + created + 33 ", updated=" + updated + 34 '}'; 35 } 36 37 public Long getId() { 38 return id; 39 } 40 41 public void setId(Long id) { 42 this.id = id; 43 } 44 45 public String getName() { 46 return name; 47 } 48 49 public void setName(String name) { 50 this.name = name; 51 } 52 53 public boolean isSex() { 54 return sex; 55 } 56 57 public void setSex(boolean sex) { 58 this.sex = sex; 59 } 60 61 public String getPwd() { 62 return pwd; 63 } 64 65 public void setPwd(String pwd) { 66 this.pwd = pwd; 67 } 68 69 public Date getBirthday() { 70 return birthday; 71 } 72 73 public void setBirthday(Date birthday) { 74 this.birthday = birthday; 75 } 76 77 public String getCity() { 78 return city; 79 } 80 81 public void setCity(String city) { 82 this.city = city; 83 } 84 85 public String getPhone() { 86 return phone; 87 } 88 89 public void setPhone(String phone) { 90 this.phone = phone; 91 } 92 93 public boolean isLead() { 94 return lead; 95 } 96 97 public void setLead(boolean lead) { 98 this.lead = lead; 99 } 100 101 public String getLoginNumber() { 102 return loginNumber; 103 } 104 105 public void setLoginNumber(String loginNumber) { 106 this.loginNumber = loginNumber; 107 } 108 109 /** 110 * ID 111 */ 112 @Id 113 @GeneratedValue(strategy = GenerationType.IDENTITY) 114 private Long id; 115 116 /** 117 * 登陆账号,也是编辑 118 */ 119 @Column(name = "login_number") 120 private String loginNumber; 121 122 /** 123 * 员工姓名 124 */ 125 private String name; 126 127 /** 128 * 员工性别 <br /> 129 * true : 男 <br /> 130 * false : 女 131 */ 132 private boolean sex; 133 134 /** 135 * 登陆密码 136 */ 137 private String pwd; 138 139 /** 140 * 出生日期 141 */ 142 @DateTimeFormat(pattern="yyyy-MM-dd") 143 private Date birthday; 144 145 /** 146 * 居住地(城市) 147 */ 148 private String city; 149 150 /** 151 * 办公室电话 152 */ 153 private String phone; 154 155 /** 156 * 是否领导 <br /> 157 * true : 是 <br /> 158 * false : 不是 159 */ 160 private boolean lead; 161}

Mapper

1package com.laolang.jc.one.manage.mapper; 2 3 4import com.laolang.jc.one.manage.domain.Employee; 5import tk.mybatis.mapper.common.Mapper; 6 7public interface EmployeeMapper extends Mapper<Employee> { 8} 9

service

BaseService

1package com.laolang.jc.one.manage.service; 2 3import com.github.pagehelper.PageHelper; 4import com.github.pagehelper.PageInfo; 5import com.laolang.jc.one.manage.domain.BaseDomain; 6import org.springframework.beans.factory.annotation.Autowired; 7import tk.mybatis.mapper.common.Mapper; 8import tk.mybatis.mapper.entity.Example; 9 10import java.util.Date; 11import java.util.List; 12 13public abstract class BaseService<T extends BaseDomain> { 14 15// 不使用泛型注入的方法 16// public abstract Mapper<T> getMapper(); 17 18 @Autowired 19 protected Mapper<T> mapper; 20 21 /** 22 * 根据条件查询记录数 23 * @param t 24 * @return 25 */ 26 public Integer findCountByWhere( T t){ 27 return mapper.selectCount(t); 28 } 29 30 /** 31 * 根据 ID 查询 32 * 33 * @param id id 34 * @return 35 */ 36 public T findById(Long id) { 37 return mapper.selectByPrimaryKey(id); 38 } 39 40 41 /** 42 * 查询所有 43 * 44 * @return 45 */ 46 public List<T> findAll() { 47 return mapper.selectAll(); 48 } 49 50 /** 51 * 根据条件查询一个 52 * 53 * @param t 54 * @return 55 */ 56 public T findOne(T t) { 57 return mapper.selectOne(t); 58 } 59 60 /** 61 * 根据条件查询列表 62 * 63 * @param t 64 * @return 65 */ 66 public List<T> findListByWhere(T t) { 67 return mapper.select(t); 68 } 69 70 /** 71 * 带条件的分页查询 72 * 73 * @param page 74 * @param rows 75 * @param t 76 * @return 77 */ 78 public PageInfo<T> findPageListByWhere(Integer page, Integer rows, T t) { 79 PageHelper.startPage(page, rows); 80 List<T> list = mapper.select(t); 81 return new PageInfo<T>(list); 82 } 83 84 /** 85 * 插入数据,null的属性也会保存,不会使用数据库默认值 86 * 87 * @param t 88 * @return 89 */ 90 public Integer save(T t) { 91 t.setCreated(new Date()); 92 t.setUpdated(t.getCreated()); 93 return mapper.insert(t); 94 } 95 96 /** 97 * 插入数据,null的属性不会保存,会使用数据库默认值 98 * 99 * @param t 100 * @return 101 */ 102 public Integer saveSelective(T t) { 103 t.setCreated(new Date()); 104 t.setUpdated(t.getCreated()); 105 return mapper.insertSelective(t); 106 } 107 108 109 /** 110 * 根据主键更新实体全部字段,null值会被更新 111 * 112 * @param t 113 * @return 114 */ 115 public Integer updateByPrimaryKey(T t) { 116 t.setUpdated(new Date()); 117 return mapper.updateByPrimaryKey(t); 118 } 119 120 /** 121 * 根据主键更新属性不为null的值 122 * 123 * @param t 124 * @return 125 */ 126 public Integer updateByPrimaryKeySelective(T t) { 127 t.setUpdated(new Date()); 128 return mapper.updateByPrimaryKeySelective(t); 129 } 130 131 /** 132 * 根据ID删除 133 * 134 * @param id 135 * @return 136 */ 137 public Integer deleteById(Long id) { 138 return mapper.deleteByPrimaryKey(id); 139 } 140 141 /** 142 * 批量删除 143 * 144 * @param clazz 要删除的类 145 * @param property ID 名称 146 * @param values 要删除的ID列表 147 * @return 148 */ 149 public Integer deleteByIds(Class<T> clazz, String property, List< Object> values) { 150 Example example = new Example(clazz); 151 example.createCriteria().andIn(property, values); 152 return mapper.deleteByExample(example); 153 } 154 155 /** 156 * 根据条件删除 157 * 158 * @param t 159 * @return 160 */ 161 public Integer deleteByWhere(T t) { 162 return mapper.delete(t); 163 } 164 165 166 167 168} 169

EmployeeService

1package com.laolang.jc.one.manage.service; 2 3 4import com.laolang.jc.one.manage.domain.Employee; 5import org.springframework.stereotype.Service; 6 7@Service 8public class EmployeeService extends BaseService<Employee> { 9 10 11} 12

pojo

1package com.laolang.jc.one.manage.web.pojo; 2 3 4import java.util.List; 5 6public class EasyUIGridPojo<T> { 7 8 public EasyUIGridPojo() { 9 } 10 11 public List<T> getRows() { 12 return rows; 13 } 14 15 public void setRows(List<T> rows) { 16 this.rows = rows; 17 } 18 19 public Long getTotal() { 20 return total; 21 } 22 23 public void setTotal(Long total) { 24 this.total = total; 25 } 26 27 private List<T> rows; 28 29 private Long total; 30} 31

controller

1package com.laolang.jc.one.manage.web.web; 2 3import com.github.pagehelper.PageInfo; 4import com.laolang.jc.one.manage.domain.Employee; 5import com.laolang.jc.one.manage.service.EmployeeService; 6import com.laolang.jc.one.manage.web.pojo.EasyUIGridPojo; 7import org.apache.commons.lang3.StringUtils; 8import org.springframework.beans.factory.annotation.Autowired; 9import org.springframework.http.HttpStatus; 10import org.springframework.http.ResponseEntity; 11import org.springframework.stereotype.Controller; 12import org.springframework.web.bind.annotation.RequestMapping; 13import org.springframework.web.bind.annotation.RequestMethod; 14import org.springframework.web.bind.annotation.RequestParam; 15 16import java.util.ArrayList; 17import java.util.List; 18 19@RequestMapping("employee") 20@Controller 21public class EmployeeController { 22 23 24 25 @Autowired 26 private EmployeeService employeeService; 27 28 /** 29 * 查询 30 * @param page 第几页 31 * @param rows 每页显示多少条 32 * @return {@link com.laolang.jc.one.manage.web.pojo.EasyUIGridPojo} 实例 33 */ 34 @RequestMapping(value = "list", method = RequestMethod.GET) 35 public ResponseEntity<EasyUIGridPojo<Employee>> list(@RequestParam(value = "page", defaultValue = "1") Integer page, @RequestParam(value = "rows", defaultValue = "30") 36 Integer rows) { 37 PageInfo<Employee> pageInfo = employeeService.findPageListByWhere(page,rows,null); 38 EasyUIGridPojo<Employee> gridPojo = new EasyUIGridPojo<>(); 39 gridPojo.setTotal(pageInfo.getTotal()); 40 gridPojo.setRows(pageInfo.getList()); 41 return ResponseEntity.ok(gridPojo); 42 } 43 44 /** 45 * 批量删除员工信息 46 * @param ids id字符串[1-2-3] 47 * @return 48 * 400 : 请求参数有误 <br /> 49 * 204 : 删除成功 <br /> 50 * 500 : 服务器内部 51 */ 52 @RequestMapping(value = "delete",method = RequestMethod.POST) 53 public ResponseEntity<Void> delete( @RequestParam(value = "ids") String ids ){ 54 String[] idArray = StringUtils.split(ids,'-'); 55 if ( null == idArray || 0 == idArray.length ){ 56 return ResponseEntity.status(HttpStatus.BAD_REQUEST).build(); 57 } 58 59 try{ 60 if( 1 == idArray.length ){ 61 employeeService.deleteById(Long.parseLong(idArray[0])); 62 }else{ 63 List<Object> idList = new ArrayList<>(); 64 for (String s : idArray) { 65 idList.add(Long.parseLong(s)); 66 } 67 employeeService.deleteByIds(Employee.class,"id",idList); 68 } 69 return ResponseEntity.status(HttpStatus.NO_CONTENT).build(); 70 }catch (Exception e){ 71 return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); 72 } 73 } 74 75 /** 76 * 添加员工信息 77 * @param employee 员工 78 * @return 79 * 201 : 新增成功 <br /> 80 * 500 : 服务器内部错误 81 */ 82 @RequestMapping(value = "save",method = RequestMethod.POST) 83 public ResponseEntity<Void> save( Employee employee ){ 84 try{ 85 System.out.println(employee); 86 employee.setPwd("123456"); 87 employeeService.saveSelective(employee); 88 return ResponseEntity.status(HttpStatus.CREATED).build(); 89 }catch (Exception e){ 90 return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); 91 } 92 } 93 94 /** 95 * 更新员工信息 96 * @param employee 97 * @return 98 */ 99 @RequestMapping(value = "update",method = RequestMethod.POST) 100 public ResponseEntity<Void> update( Employee employee ){ 101 try{ 102 System.out.println(employee); 103 employeeService.updateByPrimaryKeySelective(employee); 104 return ResponseEntity.status(HttpStatus.NO_CONTENT).build(); 105 }catch (Exception e){ 106 return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); 107 } 108 } 109} 110

page

index.html

1<!DOCTYPE html> 2<html> 3<head lang="en"> 4 <meta charset="UTF-8"> 5 <title>index</title> 6 <link rel="stylesheet" type="text/css" href="https://my.oschina.net/assets/jquery-easyui-1.4.5/themes/default/easyui.css" /> 7 <link rel="stylesheet" type="text/css" href="https://my.oschina.net/assets/jquery-easyui-1.4.5/themes/icon.css" /> 8 9</head> 10<body class="easyui-layout"> 11 12<div data-options="region:'north',title:'header',split:true,noheader:true" style="height:45px;"> 13 banner 14</div> 15<!--<div data-options="region:'south',title:'footer',split:true,noheader:true" style="height:35px;line-height:30px;text-align:center;">--> 16 <!--copyRight--> 17<!--</div>--> 18<div data-options="region:'west',title:'导航',split:true,iconCls:'icon-world'" style="width:180px;padding:10px;"> 19 <ul id="nav" class="easyui-tree" data-options="lines:true,animate:true"> 20 <li> 21 <span>员工管理</span> 22 <ul> 23 <li>员工查询</li> 24 </ul> 25 </li> 26 <li> 27 <span>消息管理</span> 28 <ul> 29 <li>消息查询</li> 30 </ul> 31 </li> 32 </ul> 33</div> 34<div data-options="region:'center'" style="overflow:hidden;"> 35 <div id="tabs"> 36 <div title="起始页" iconCls="icon-home" style="padding:0 10px;display:block;"> 37 欢迎来到后台管理系统! 38 </div> 39 </div> 40</div> 41 42 43<script type="text/javascript" src="https://my.oschina.net/assets/jquery/jquery.min.js"></script> 44<script type="text/javascript" src="https://my.oschina.net/assets/jquery-easyui-1.4.5/jquery.easyui.min.js"></script> 45<script type="text/javascript" src="https://my.oschina.net/assets/jquery-easyui-1.4.5/locale/easyui-lang-zh_CN.js"></script> 46 47<script type="text/javascript"> 48 49 /** 50 * 根据菜单文本返回对应页面的地址 51 * @param {string} menuText 菜单文本 52 * @returns {string} 对应页面的URL地址 53 */ 54 function getUrl( menuText ){ 55 if ( '员工查询' == menuText ){ 56 return 'page/employee/list'; 57 }else if( '消息查询' == menuText ){ 58 return 'page/message/list'; 59 } 60 61 return ''; 62 } 63 64 $(function () { 65 console.log('jc one!'); 66 67 var tab = $('#tabs'); 68 var nav = $('#nav'); 69 // 初始化tab 70 tab.tabs({ 71 fit : true, 72 border : false 73 }); 74 75 // tree 点击事件 76 nav.tree({ 77 onClick : function (node) { 78 if( nav.tree('isLeaf',node.target) ){ 79 var text = node.text; 80 var url = getUrl(text); 81 if( tab.tabs('exists',text)){ 82 tab.tabs('select',text); 83 }else{ 84 if ( url !== '') { 85 tab.tabs('add',{ 86 url:url, 87 closable : true, 88 title : text, 89 href : url 90 }); 91 } 92 } 93 } 94 } 95 }); 96 }); 97 98 99</script> 100</body> 101</html>

list.html

1<!DOCTYPE html> 2<html> 3<head lang="en"> 4 <meta charset="UTF-8"> 5 <title></title> 6</head> 7<body> 8<table id="employee-data"></table> 9 10<script type="text/javascript"> 11 $(function () { 12 var grid = $('#employee-data'); 13 var win = $('<div>'); 14 grid.datagrid({ 15 loadMsg:'数据加载中....', 16 url : 'http://manage.jcone.com/employee/list', 17 idField : 'id', 18 rownumbers : true, 19 striped : true, 20 pagination : true, 21 method : 'GET', 22 ctrlSelect : true, 23 pageSize : 30, 24 pageList : [30, 60, 90], 25 fitColumns : true, 26 toolbar : [{ 27 text : '添加', 28 iconCls:'icon-add', 29 handler : function () { 30 createWindow({ 31 type : 'save', 32 url : 'employee/save' 33 }); 34 } 35 },'-',{ 36 text : '编辑', 37 iconCls:'icon-edit', 38 handler : function () { 39 var rows = grid.datagrid('getSelections'); 40 if( 0 == rows.length || rows.length > 1 ){ 41 $.messager.show({title: '提示',msg: '请选择一条数据!',timeout: 2000,showType: 'slide'}); 42 }else{ 43 createWindow({ 44 type : 'update', 45 url : 'employee/update', 46 rowData : rows[0] 47 }); 48 } 49 } 50 },'-',{ 51 text : '删除', 52 iconCls:'icon-remove', 53 handler : function () { 54 var ids = []; 55 var rows = grid.datagrid('getSelections'); 56 if( rows.length > 0 ) { 57 for (var i = 0; i < rows.length; i++) { 58 ids.push(rows[i].id) 59 } 60 var idStr = ''; 61 for (var i = 0; i < ids.length; i++) { 62 idStr += ids[i] + '-'; 63 } 64 idStr = idStr.substr(0, idStr.length - 1); 65 $.ajax({ 66 url: 'employee/delete', 67 data: 'ids=' + idStr, 68 type: 'POST', 69 statusCode: { 70 204: function (data) { 71 $.messager.show({title: '提示',msg: '已删除',timeout: 2000,showType: 'slide'}); 72 grid.datagrid('reload'); 73 }, 74 400: function (data) { 75 $.messager.show({title: '提示',msg: '请求参数错误',timeout: 2000,showType: 'slide'}); 76 }, 77 500: function (data) { 78 $.messager.alert('提示', '服务器内部错误!', 'error'); 79 } 80 } 81 }); 82 }else{ 83 $.messager.show({title: '提示',msg: '未选择数据',timeout: 2000,showType: 'slide'}); 84 } 85 86 } 87 }], 88 columns : [ 89 [{field : 'id',title : 'id',width : 100,checkbox:true},{field : 'loginNumber',title : '编号',width : 50}, 90 {field : 'name',title : '姓名',width : 100},{field : 'sex',title : '性别',width : 50,formatter : formateSex}, 91 {field : 'birthday',title : '出生日期',width : 80,formatter : formateBirthday},{field : 'lead',title : '是否领导',width : 50,formatter : formateLead}, 92 {field : 'phone',title : '办公室电话',width : 100},{field : 'city',title : '住址',width : 100}, 93 {field : 'created',title : '创建时间',width : 120,formatter : formateDateTime},{field : 'updated',title : '更新时间',width : 120,formatter : formateDateTime} 94 ] 95 ] 96 }); 97 98 99 /** 100 * 性别格式化 101 * @param [boolean] sex 性别 102 * @returns {string} 103 * true : 男 104 * false : 女 105 */ 106 function formateSex( sex ){ 107 if(!sex){ 108 return '女' 109 } 110 return '男'; 111 } 112 113 /** 114 * 是否领导格式化 115 * @param lead 是否领导 116 * @returns {string} 117 * true : 是 118 * false : 否 119 */ 120 function formateLead( lead ){ 121 if( !lead ){ 122 return '否'; 123 } 124 return '是'; 125 } 126 127 /** 128 * 格式化出生日期 129 * @param {string} birthday 出生日期 130 * @returns {string} yyyy-MM-dd 131 */ 132 function formateBirthday( birthday ){ 133 var date = new Date(parseInt(birthday)); 134 var b = date.getFullYear() + '-' + ( date.getMonth() - 1 ) + '-' + date.getDate(); 135 return b; 136 } 137 138 /** 139 * 格式化时间戳 140 * @param {string} datetime 时间戳 141 * @returns {string} yyyy-MM-dd HH:mm:ss 142 */ 143 function formateDateTime( datetime ){ 144 var date = new Date(parseInt(datetime)); 145 var b = date.getFullYear() + '-' + ( date.getMonth() - 1 ) + '-' + date.getDate() + ' ' + date.getHours() + ':' + date.getMinutes() + ':'+ date.getSeconds(); 146 return b; 147 } 148 149 /** 150 * 创建表单窗口 151 * @param winConfig 152 * type : 153 * save 新增 154 * update 更新 155 * url : ajax提交地址 156 * rowData : datagrid行 157 */ 158 function createWindow( winConfig ){ 159 var type = winConfig.type; 160 var url = winConfig.url; 161 var winTitle = ''; 162 var msgText = ''; 163 if( 'save' == type ){ 164 msgText = '新增成功!'; 165 winTitle = '新增员工信息'; 166 }else if( 'update' == type ){ 167 msgText = '更新成功!'; 168 winTitle = '更新员工信息'; 169 } 170 win.css('padding','10px'); 171 win.addClass('easyui-layout'); 172 win.window({ 173 width : 400, 174 height : 350, 175 modal : true, 176 closable : false, 177 maximizable : false, 178 collapsible : false, 179 resizable : false, 180 minimizable : false, 181 //{"北京市", "天津市", "唐山市", "邯郸市", "邢台市", "保定市", "承德市", "沧州市", "廊坊市", "衡水市", "太原市", "大同市", "阳泉市", "长治市", "晋城市", "晋中市", "运城市", "忻州市", "临汾市", "吕梁市", "朔州市"}; 182 title : winTitle, 183 content : "<div data-options='region:center'><form id='employee-form'><table style='border-spacing:0px 10px'>\ 184 <input id='emp-id' type='hidden' name='id'/>\ 185 <tr><td>员工编号:</td><td><input id='emp-loginNumber' name='loginNumber' class='easyui-validatebox' data-options='required:true'/></td></tr>\ 186 <tr><td>员工姓名:</td><td><input id='emp-name' name='name' class='easyui-validatebox' data-options='required:true'/></td></tr>\ 187 <tr><td>员工性别:</td><td><select id='emp-sex' style='width:180px' class='easyui-combobox' data-options='editable:false,panelHeight:50'>\ 188 <option value='true'>男</option><option value='false'>女</option></select>\ 189 <input id='emp-sex-sub' type='hidden' name='sex'/></td></tr>\ 190 <tr><td>办公室电话:</td><td><input id='emp-phone' name='phone' class='easyui-validatebox' data-options='required:true'/></td></tr>\ 191 <tr><td>住址:</td><td><select id='emp-city' name='city' class='easyui-combobox'>\ 192 <option value='北京市'>北京市</option><option value='大同市'>大同市</option><option value='太原市'>太原市</option>\ 193 </select></td></tr>\ 194 <tr><td>出生日期:</td><td><input id='emp-birthday' name='birthday' class='easyui-datebox' required ='required'/></td></tr>\ 195 <tr><td>是否领导:</td><td><select id='emp-lead' style='width:180px' class='easyui-combobox' data-options='editable:false,panelHeight:50'>\ 196 <option value='true'>是</option><option value='false'>否</option>\ 197 </select> <input id='emp-lead-sub' type='hidden' name='lead'/></td></tr>\ 198 </table></form></div>\ 199 <div data-options='region:south' style='text-align:right;padding:5px 0 0'>\ 200 <a id='form-btn-submit' class='easyui-linkbutton' href='javascript:void(0)' style='width:80px' >确定</a>\ 201 <a id='form-btn-cancle' class='easyui-linkbutton' href='javascript:void(0)' style='width:80px' >取消</a>\ 202 </div>", 203 onOpen : function () { 204 if( 'update' == type ){ 205 setFormValue(winConfig.rowData); 206 } 207 208 win.find('#form-btn-submit').click(function () { 209 winSubFunc(url,win.find('#employee-form'),msgText); 210 }); 211 win.find('#form-btn-cancle').click(function () { 212 win.window('destroy'); 213 }); 214 }, 215 onClose : function () { 216 win.window('destroy'); 217 } 218 }); 219 } 220 221 /** 222 * 表单窗口提交 223 * @param url ajax 地址 224 * @param empForm 表彰对象[jQuery对象] 225 * @param msgText 提示信息 226 */ 227 function winSubFunc( url , empForm , msgText ){ 228 var sexText = win.find('#emp-sex').combobox('getValue'); 229 var sex = ''; 230 if( '男' == sexText || 'true' == sexText ){ sex = 'true' }else if( '女' == sexText || 'false' == sexText ){ sex = 'false' } 231 win.find('#emp-sex-sub').val(sex); 232 233 var leadText = win.find('#emp-lead').combobox('getValue'); 234 var lead = ''; 235 if( '是' == leadText || 'true' == leadText ){ lead = 'true' }else if( '否' == leadText || 'false' == leadText ){ lead = 'false' } 236 win.find('#emp-lead-sub').val(lead); 237 238 $.ajax({ 239 url : url, 240 type : 'POST', 241 data : empForm.serialize(), 242 statusCode : { 243 201 : function () { 244 showMsg(msgText) 245 }, 246 204 : function () { 247 showMsg(msgText); 248 }, 249 500 : function () { 250 $.messager.alert('提示', '服务器内部错误!', 'error'); 251 } 252 } 253 }); 254 } 255 256 /** 257 * 1.显示提示信息 258 * 2.关闭表单窗口 259 * 3. 重新加载datagrid 260 * @param msgText 提示信息 261 */ 262 function showMsg( msgText ){ 263 $.messager.show({title: '提示',msg: msgText,timeout: 2000,showType: 'slide'}); 264 grid.datagrid('reload'); 265 win.window('destroy'); 266 grid.datagrid('reload'); 267 } 268 269 /** 270 * 设置表单值 271 * @param rowData datagrid行 272 */ 273 function setFormValue( rowData ){ 274 win.find('#emp-id').val(rowData.id); 275 win.find('#emp-loginNumber').val(rowData.loginNumber); 276 win.find('#emp-name').val(rowData.name); 277 var v = rowData.sex == true ? '男' : '女'; 278 win.find('#emp-sex').combobox('select',v); 279 win.find('#emp-phone').val(rowData.phone); 280 win.find('#emp-city').val(rowData.city); 281 win.find('#emp-birthday').datebox('setValue',formateBirthday(rowData.birthday)); 282 v = rowData.lead == true ? '是' : '否'; 283 win.find('#emp-lead').combobox('select',v); 284 } 285 }); 286</script> 287</body> 288</html>

配置文件

spring-mvc

1<?xml version="1.0" encoding="UTF-8"?> 2<beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" 4 xmlns:mvc="http://www.springframework.org/schema/mvc" 5 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 6 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd 7 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> 8 9 <context:component-scan base-package="com.laolang.jc.one.manage.web.web"></context:component-scan> 10 11 12 <mvc:annotation-driven> 13 14 </mvc:annotation-driven> 15 16 <mvc:resources location="/assets/" mapping="/assets/**"/> 17 18 <!-- beetl 配置 --> 19 <bean id="beetlConfig" class="org.beetl.ext.spring.BeetlGroupUtilConfiguration" init-method="init"/> 20 <bean id="viewResolver" class="org.beetl.ext.spring.BeetlSpringViewResolver"> 21 <property name="contentType" value="text/html;charset=UTF-8"/> 22 </bean> 23</beans> 24

spring-public

1<?xml version="1.0" encoding="UTF-8"?> 2<beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" 4 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 5 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 6 7 <context:component-scan base-package="com.laolang"></context:component-scan> 8 9 10 <!-- 导入配置文件 --> 11 <bean 12 class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 13 <!-- 允许JVM参数覆盖 --> 14 <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" /> 15 <!-- 忽略没有找到的资源文件 --> 16 <property name="ignoreResourceNotFound" value="true" /> 17 <!-- 配置资源文件 --> 18 <property name="locations"> 19 <list> 20 <value>classpath:db.properties</value> 21 </list> 22 </property> 23 </bean> 24 25 <!-- 配置 druid数据源 --> 26 <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" 27 init-method="init" destroy-method="close"> 28 <!-- 基本属性 url、user、password --> 29 <property name="url" value="${jdbc.jdbcUrl}" /> 30 <property name="username" value="${jdbc.user}" /> 31 <property name="password" value="${jdbc.password}" /> 32 33 <!-- 配置初始化大小、最小、最大 --> 34 <property name="initialSize" value="1" /> 35 <property name="minIdle" value="1" /> 36 <property name="maxActive" value="20" /> 37 38 <!-- 配置获取连接等待超时的时间 --> 39 <property name="maxWait" value="60000" /> 40 41 <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 --> 42 <property name="timeBetweenEvictionRunsMillis" value="60000" /> 43 44 <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 --> 45 <property name="minEvictableIdleTimeMillis" value="300000" /> 46 47 <property name="validationQuery" value="SELECT 'x'" /> 48 <property name="testWhileIdle" value="true" /> 49 <property name="testOnBorrow" value="false" /> 50 <property name="testOnReturn" value="false" /> 51 52 <!-- 打开PSCache,并且指定每个连接上PSCache的大小 --> 53 <property name="poolPreparedStatements" value="true" /> 54 <property name="maxPoolPreparedStatementPerConnectionSize" 55 value="20" /> 56 57 <!-- 配置监控统计拦截的filters,去掉后监控界面sql无法统计 --> 58 <property name="filters" value="stat" /> 59 </bean> 60</beans> 61

spring-mybatis

1<?xml version="1.0" encoding="UTF-8"?> 2<beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 5 6 7 <!-- 配置SqlSessionFactory --> 8 <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean"> 9 <!-- 数据源 --> 10 <property name="dataSource" ref="dataSource" /> 11 <!-- 配置 mybatis 配置文件 --> 12 <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"></property> 13 <!-- sql 映射文件 --> 14 <!--<property name="mapperLocations" value="classpath:mybatis/**/mapping/*.xml" 15 /> --> 16 <property name="typeAliasesPackage" value="com.laolang.jc.one.manage.domain" /> 17 </bean> 18 19 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 20 <!-- 会话工厂 --> 21 <property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean" /> 22 <!-- 扫描包路径 多个包中间用半角逗号分隔 --> 23 <property name="basePackage" value="com.laolang.jc.one.manage.mapper" /> 24 </bean> 25 26 <bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer"> 27 <property name="basePackage" value="com.laolang.jc.one.manage.mapper" /> 28 <property name="properties"> 29 <value> 30 mappers=tk.mybatis.mapper.common.Mapper 31 </value> 32 </property> 33 </bean> 34 35 36</beans> 37

spring-transaction

1<?xml version="1.0" encoding="UTF-8"?> 2<beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 5 6 7 <!-- 配置SqlSessionFactory --> 8 <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean"> 9 <!-- 数据源 --> 10 <property name="dataSource" ref="dataSource" /> 11 <!-- 配置 mybatis 配置文件 --> 12 <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"></property> 13 <!-- sql 映射文件 --> 14 <!--<property name="mapperLocations" value="classpath:mybatis/**/mapping/*.xml" 15 /> --> 16 <property name="typeAliasesPackage" value="com.laolang.jc.one.manage.domain" /> 17 </bean> 18 19 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 20 <!-- 会话工厂 --> 21 <property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean" /> 22 <!-- 扫描包路径 多个包中间用半角逗号分隔 --> 23 <property name="basePackage" value="com.laolang.jc.one.manage.mapper" /> 24 </bean> 25 26 <bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer"> 27 <property name="basePackage" value="com.laolang.jc.one.manage.mapper" /> 28 <property name="properties"> 29 <value> 30 mappers=tk.mybatis.mapper.common.Mapper 31 </value> 32 </property> 33 </bean> 34 35 36</beans> 37

运行效果

输入图片说明

输入图片说明

mysql

1CREATE TABLE `tb_employee` ( 2 `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '员工ID', 3 `login_number` varchar(20) NOT NULL COMMENT '登陆名,也是员工编号', 4 `name` varchar(20) NOT NULL COMMENT '员工姓名', 5 `sex` tinyint(1) NOT NULL DEFAULT '1' COMMENT '员工性别,1:男,0:女', 6 `pwd` varchar(150) NOT NULL COMMENT '员工登陆密码', 7 `birthday` date DEFAULT NULL COMMENT '出生日期', 8 `city` varchar(50) DEFAULT NULL COMMENT '居住地[城市名]', 9 `phone` varchar(20) NOT NULL COMMENT '办公室电话', 10 `lead` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否领导,1:是,0不是', 11 `created` datetime DEFAULT NULL COMMENT '创建时间', 12 `updated` datetime DEFAULT NULL COMMENT '创建时间', 13 PRIMARY KEY (`id`), 14 UNIQUE KEY `login_number` (`login_number`) 15) ENGINE=InnoDB AUTO_INCREMENT=4510 DEFAULT CHARSET=utf8 COMMENT='员工表';

项目地址

http://git.oschina.net/laolang2016/jcone/tree/ssm-1.1.0/

点赞
收藏

评论区

加载中...

相关推荐

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

springboot2.1整合mybatis

1:添加依赖<?xmlversion"1.0"encoding"UTF8"?<projectxmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchemainstance"xsi

基于Maven工程下的MyBatis框架+MySQL+连接池的数据查询操作

具体操作项目结构引入项目依赖pom.xml<?xmlversion"1.0"encoding"UTF8"?<projectxmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchemainstance"xsi

SpringBoot2.0配置durid数据源

pom依赖<?xmlversion"1.0"encoding"UTF8"?<projectxmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchemainstance"

Spring boot 配置异步处理执行器

示例如下:1、新建Maven项目 asyncexecutor2、pom.xml<projectxmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchemainstance"xsi:sch

121 项目 034 笔记向 easyui

pom<?xmlversion"1.0"encoding"UTF8"?<projectxmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchemainstance"