在公司实习的时候 公司用的是 MAVEN_SPRING SPRINGMVC MYBATIS FREEMARKER 框架; 用了2个月;就想自己来整合一下框架;
一:
在整合的时候我也参考了很多博文;但是都不一样,比如配置文件,我就不知道怎么样子分才好;有人分2个,有人分3个之类的;这里我分了两个配置文件
一个是;spring-mvc.xml 这个就专门用来配置springmvc的; 一个是spring-mybatis.xml;用来整合spring和mybatis;
整体如下:
二,maven引入相应的jar包;
代码语言:javascript复制 4.0.0
com.szz
cwgl
war
0.0.1-SNAPSHOT
cwgl Maven Webapp
http://maven.apache.org
junit
junit
3.8.1
test
com.google.guava
guava
15.0
org.springframework
spring-web
3.0.5.RELEASE
org.springframework
spring-webmvc
3.0.5.RELEASE
mysql
mysql-connector-java
5.1.26
org.springframework
spring-jdbc
4.1.4.RELEASE
org.mybatis
mybatis
3.2.3
org.mybatis
mybatis-spring
1.2.1
org.freemarker
freemarker
2.3.20
log4j
log4j
${log4j.version}
com.alibaba
fastjson
1.1.41
org.slf4j
slf4j-api
${slf4j.version}
org.slf4j
slf4j-log4j12
${slf4j.version}
cwgl
三、整合Spring与MyBatis
这个文件就是用来完成spring和mybatis的整合的。这里面也没多少行配置,主要的就是自动扫描,自动注入,配置数据库。注释也很详细,大家看看就明白了。
spring-mybatis.xml
代码语言:javascript复制
spring-mvc。xml
代码语言:javascript复制 /WEB-INF/view/
.jsp
四、 Log4j的配置
为了方便调试,一般都会使用日志来输出信息,Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。
Log4j的配置很简单,而且也是通用的,下面给出一个基本的配置,换到其他项目中也无需做多大的调整,如果想做调整或者想了解Log4j的各种配置,参看我转载的一篇博文,很详细:
http://blog.csdn.net/zhshulin/article/details/37937365
下面给出配置文件目录:
log4j.properties
代码语言:javascript复制[html] view plaincopyprint?在CODE上查看代码片派生到我的代码片
#定义LOG输出级别
log4j.rootLogger=INFO,Console,File
#定义日志输出目的地为控制台
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
#可以灵活地指定日志输出格式,下面一行是指定具体的格式
log4j.appender.Console.layout = org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n
#文件大小到达指定尺寸的时候产生一个新的文件
log4j.appender.File = org.apache.log4j.RollingFileAppender
#指定输出目录
log4j.appender.File.File = logs/ssm.log
#定义文件最大大小
log4j.appender.File.MaxFileSize = 10MB
# 输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志
log4j.appender.File.Threshold = ALL
log4j.appender.File.layout = org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH:mm:ss}][%c]%m%n
五、
利用MyBatis Generator自动创建代码
参考博文:http://blog.csdn.net/zhshulin/article/details/23912615
mapper.xml生成的文件;
代码语言:javascript复制 ID, EmplID, Totalincome, percent, TotalEarn, remark
select
from additional
where ID = #{id,jdbcType=INTEGER}
and ID=#{condition.id}
and EmplID=#{condition.emplid}
and Totalincome=#{condition.totalincome}
and percent=#{condition.percent}
and TotalEarn=#{condition.totalearn}
and remark=#{condition.remark}
select * from additional
delete from additional
where ID = #{id,jdbcType=INTEGER}
insert into additional (ID, EmplID, Totalincome,
percent, TotalEarn, remark
)
values (#{id,jdbcType=INTEGER}, #{emplid,jdbcType=INTEGER}, #{totalincome,jdbcType=DECIMAL},
#{percent,jdbcType=REAL}, #{totalearn,jdbcType=DECIMAL}, #{remark,jdbcType=VARCHAR}
)
insert into additional
ID,
EmplID,
Totalincome,
percent,
TotalEarn,
remark,
#{id,jdbcType=INTEGER},
#{emplid,jdbcType=INTEGER},
#{totalincome,jdbcType=DECIMAL},
#{percent,jdbcType=REAL},
#{totalearn,jdbcType=DECIMAL},
#{remark,jdbcType=VARCHAR},
update additional
EmplID = #{emplid,jdbcType=INTEGER},
Totalincome = #{totalincome,jdbcType=DECIMAL},
percent = #{percent,jdbcType=REAL},
TotalEarn = #{totalearn,jdbcType=DECIMAL},
remark = #{remark,jdbcType=VARCHAR},
where ID = #{id,jdbcType=INTEGER}
update additional
set EmplID = #{emplid,jdbcType=INTEGER},
Totalincome = #{totalincome,jdbcType=DECIMAL},
percent = #{percent,jdbcType=REAL},
TotalEarn = #{totalearn,jdbcType=DECIMAL},
remark = #{remark,jdbcType=VARCHAR}
where ID = #{id,jdbcType=INTEGER}
自动生成的mapper.xml文件大部分能满足增删改查的要求; 但是查询只给了一个select by primarykey ;只能查询一条数据; 我自己写了一个多条件查询的;但是我不知道怎么修改
MyBatis Generator 让它也自动生成我添加的代码; 等以后有空研究下; 有知道怎么修改的能否告知一二;
六、测试一下;
代码语言:javascript复制public interface DepartmentService {
代码语言:javascript复制 //这里没有写全; 就写了2个方法;
List find(DepartmentVO condition);
Department get(Integer id);
}
代码语言:javascript复制@Service("departmentImplService")
public class DepartmentImplService implements DepartmentService{
@Resource
private IDepartmentDao departmentDAO;
@Override
public List find(DepartmentVO condition) {
// TODO Auto-generated method stub
/*HashMap param = new HashMap();*/
Map params = Maps.newHashMap();
params.put("condition", condition);
return departmentDAO.find(params);
}
@Override
public Department get(Integer id) {
// TODO Auto-generated method stub
return departmentDAO.selectByPrimaryKey(id);
}
}
//VO是继承model的 方便添加查询条件;
代码语言:javascript复制@Controller
@RequestMapping("/department")
public class DepartmentController {
@Resource
private DepartmentImplService departmentService;
@RequestMapping("/index")
public String index(Model model){
Department dp = departmentService.get(1);
DepartmentVO condition = new DepartmentVO();
condition.setStatus("1");
List dep = departmentService.find(condition);
model.addAttribute("dp_name", dep.get(0).getDpName());
return "/test";
}
}
代码语言:javascript复制hello!
.........
hello ${dp_name}
运行
完成!!
继续整合freemarker;
只需要在spring-mvc.xml
代码语言:javascript复制
并且maven的pom文件中引入freemarker的jar就行了
代码语言:javascript复制 org.freemarker
freemarker
2.3.20
整合完成了!!