【使用thymeleaf生成html页面】
1,新建mybatissql文自动生成配置文件,generateConfig_sample.xml
<?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" >
<generatorConfiguration>
<classPathEntry
location="E:/pleiades/workspace/sample/src/main/resources/lib/ojdbc6.jar" />
<context id="context1">
<jdbcConnection driverClass="oracle.jdbc.OracleDriver"
connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:orcl" userId="sample"
password="sample" />
<javaModelGenerator targetPackage="org.com.sample.dataset"
targetProject="sample" />
<sqlMapGenerator targetPackage="org.com.sample.mapper"
targetProject="sample" />
<javaClientGenerator targetPackage="org.com.sample.mapper"
targetProject="sample" type="XMLMAPPER" />
<table tableName="Users" />
</context>
</generatorConfiguration>
2,自动生成dataset,mapper等相关文件。
sample
|_src/main/java
|_org.com.sample
|_dataset
|_Users.java
|_UserExample.java
|_mapper
|_UsersMapper.java
|_UsersMapper.xml
把UsersMapper.xml移动到resources文件夹下
|_src/main/resources
|_org.com.sample
|_mapper
|_UsersMapper.java
3,在ApplicationConfig.java里,定义Mapper的bean
<pre name="code" class="java">Resource[] resources = new Resource[] { getMapperXMLPathResource(UsersMapper.class)
};
@Bean
public UsersMapper getUsersMapper() {
SqlSessionTemplate sessionTemplate = new SqlSessionTemplate(getSqlSessionFactory());
return sessionTemplate.getMapper(UsersMapper.class);
}
4,新规UsersService接口,内容和UsersMapper一样。
package org.com.sample.service;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import org.com.sample.dataset.Users;
import org.com.sample.dataset.UsersExample;
public interface UsersService {
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table USERS
*
* @mbggenerated Sat Oct 10 16:15:21 JST 2015
*/
int countByExample(UsersExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table USERS
*
* @mbggenerated Sat Oct 10 16:15:21 JST 2015
*/
int deleteByExample(UsersExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table USERS
*
* @mbggenerated Sat Oct 10 16:15:21 JST 2015
*/
int deleteByPrimaryKey(String username);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table USERS
*
* @mbggenerated Sat Oct 10 16:15:21 JST 2015
*/
int insert(Users record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table USERS
*
* @mbggenerated Sat Oct 10 16:15:21 JST 2015
*/
int insertSelective(Users record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table USERS
*
* @mbggenerated Sat Oct 10 16:15:21 JST 2015
*/
List<Users> selectByExample(UsersExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table USERS
*
* @mbggenerated Sat Oct 10 16:15:21 JST 2015
*/
Users selectByPrimaryKey(String username);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table USERS
*
* @mbggenerated Sat Oct 10 16:15:21 JST 2015
*/
int updateByExampleSelective(@Param("record") Users record, @Param("example") UsersExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table USERS
*
* @mbggenerated Sat Oct 10 16:15:21 JST 2015
*/
int updateByExample(@Param("record") Users record, @Param("example") UsersExample example);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table USERS
*
* @mbggenerated Sat Oct 10 16:15:21 JST 2015
*/
int updateByPrimaryKeySelective(Users record);
/**
* This method was generated by MyBatis Generator.
* This method corresponds to the database table USERS
*
* @mbggenerated Sat Oct 10 16:15:21 JST 2015
*/
int updateByPrimaryKey(Users record);
}
5,新规UsersService的实现类,UsersServiceImpl.java
package org.com.sample.service.impl;
import java.util.List;
import org.com.sample.dataset.Users;
import org.com.sample.dataset.UsersExample;
import org.com.sample.mapper.UsersMapper;
import org.com.sample.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UsersServiceImpl implements UsersService {
@Autowired
UsersMapper usersMapper;
@Override
public int countByExample(UsersExample example) {
// TODO Auto-generated method stub
return 0;
}
@Override
public int deleteByExample(UsersExample example) {
// TODO Auto-generated method stub
return 0;
}
@Override
public int deleteByPrimaryKey(String username) {
// TODO Auto-generated method stub
return 0;
}
@Override
public int insert(Users record) {
// TODO Auto-generated method stub
return 0;
}
@Override
public int insertSelective(Users record) {
// TODO Auto-generated method stub
return 0;
}
@Override
public List<Users> selectByExample(UsersExample example) {
return usersMapper.selectByExample(example);
}
@Override
public Users selectByPrimaryKey(String username) {
// TODO Auto-generated method stub
return null;
}
@Override
public int updateByExampleSelective(Users record, UsersExample example) {
// TODO Auto-generated method stub
return 0;
}
@Override
public int updateByExample(Users record, UsersExample example) {
// TODO Auto-generated method stub
return 0;
}
@Override
public int updateByPrimaryKeySelective(Users record) {
// TODO Auto-generated method stub
return 0;
}
@Override
public int updateByPrimaryKey(Users record) {
// TODO Auto-generated method stub
return 0;
}
}
6,新规UsersFacade接口
package org.com.sample.facade;
import java.util.List;
import org.com.sample.dataset.Users;
import org.com.sample.dataset.UsersExample;
public interface UsersFacade {
List<Users> selectByExample(UsersExample example);
}
7,新规 UsersFacade 接口的实现类, UsersFacadeImpl.java
package org.com.sample.facade.impl;
import java.util.List;
import org.com.sample.dataset.Users;
import org.com.sample.dataset.UsersExample;
import org.com.sample.facade.UsersFacade;
import org.com.sample.service.UsersService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
@Transactional
public class UsersFacadeImpl implements UsersFacade {
@Autowired
UsersService usersService;
@Override
public List<Users> selectByExample(UsersExample example) {
return usersService.selectByExample(example);
}
}
8,新规UsersController.java
package org.com.sample.controller;
import java.util.List;
import org.com.sample.dataset.Users;
import org.com.sample.dataset.UsersExample;
import org.com.sample.facade.UsersFacade;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@Controller
@RequestMapping("/sample/users")
public class UsersController {
private static final Logger logger = LoggerFactory.getLogger(UsersController.class);
@Autowired
UsersFacade userFacade;
@RequestMapping(value = "/show", method = RequestMethod.GET)
public String selectAllUser(Model model) {
List<Users> userList = userFacade.selectByExample(new UsersExample());
model.addAttribute("page", userList);
return "sample/users/users";
}
}
9,新规users.html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8" />
<title>Users</title>
<meta
content='width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no'
name='viewport' />
<meta th:replace="head-cssjs" />
</head>
<body class="skin-blue">
<div class="wrapper">
<!-- Content Wrapper. Contains page content -->
<div class="content-wrapper">
<!-- Content Header (Page header) -->
<section class="content-header">
<h1>Users</h1>
</section>
<!-- Main content -->
<section class="content">
<div class="row">
<div class="col-md-12">
<form id="menuForm" method="post" class="form-horizontal">
<div id="maincontent" class="box box-primary"
style="overflow-y: auto; overflow-x: hidden;">
<div class="box-body">
<div class="form-group">
<div class="col-md-12">
<div class="box box-success"
th:attrappend="style=${page == null ? 'display: none;' : ''}">
<div class="col-md-12" style="width: 99%;">
<table id="searchResult"
class="table table-condensed table-striped table-hover">
<thead>
<tr>
<th class="col-md-1">No.</th>
<th class="col-md-1">username</th>
<th class="col-md-1">password</th>
<th class="col-md-1">role</th>
</tr>
</thead>
<tbody>
<tr th:each="content, iterStat : ${page}">
<td class="col-md-1" th:id="${iterStat.index}"
th:name="${iterStat.index}"
th:value="${iterStat.index}"
th:text="${iterStat.index} + 1"></td>
<td class="col-md-1"
th:id="'page['+${iterStat.index}+'].username'"
th:name="'page['+${iterStat.index}+'].username'"
th:value="${content.username}"
th:text="${content.username}"></td>
<td class="col-md-1"
th:id="'page['+${iterStat.index}+'].password'"
th:name="'page['+${iterStat.index}+'].password'"
th:value="${content.password}"
th:text="${content.password}"></td>
<td class="col-md-1"
th:id="'page['+${iterStat.index}+'].role'"
th:name="'page['+${iterStat.index}+'].role'"
th:value="${content.role}" th:text="${content.role}"></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
</section>
<!-- /.content -->
</div>
<!-- /.content-wrapper -->
</div>
<!-- ./wrapper -->
<div th:replace="bottom-js"></div>
</body>
</html>
10.启动项目,输入URL,http://localhost:8888/sample/users/show
代码下载地址
http://pan.baidu.com/s/1o6spOJS,fourth.zip