本文档结合 SpringMVC、 Mybatis、 MySQL,说明如何实现一个简单的数据库单表 CRUD操作。开发工具使用集成了spring mvc的eclipse(Spring Tool Suite,简称STS)。
基础环境说明
- Mac OS X 10.11.5
- jre version 1.8.0_05
- java sdk 1.8.0_05
- STS 3.5.1
- maven 3.2.1
以上环境安装配置好后,就可以开始demo程序了。
MySQL建表语句
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL,
`age` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=big5
Step 1 新建spring mvc项目
使用STS新建一个spring mvc project,建立好项目后,一个基本的spring mvc web项目已经搭建 好,我们只需要在这之上配置好相关的beans,以及编写CRUD相关的代码。
可以注意一下项目中的 web.xml、 servlet-context.xml,STS已经帮我们把跟spring 相关的基本配置项配置好。
例如:web.xml中定义了请求由spring接管,以及IOC相关的配置文件名称。
mybatis
org.springframework.web.servlet.DispatcherServlet
1
mybatis
/
Step 2 使用maven加载所需的jar包
如果使用独立安装的maven程序,需要在eclipse中指定maven的路径:
Preferences — Maven — Installations
例如,我的路径是:/usr/local/maven/maven3.2.2 maven配置好后,就可以在pom文件中添加相关的依赖项了,需要添加的相关依赖配置如下:
4.0.0
com.goody9807.mybatis
mybatis_web
0.0.1-SNAPSHOT
war
mybatis_web
3.2.3.RELEASE
1.5.11
org.springframework
spring-webmvc
${org.springframework-version}
org.springframework
spring-context-support
${org.springframework-version}
org.springframework
spring-web
${org.springframework-version}
org.springframework
spring-jdbc
${org.springframework-version}
mysql
mysql-connector-java
5.1.31
commons-dbcp
commons-dbcp
1.4
org.mybatis
mybatis-spring
1.2.2
org.mybatis
mybatis
3.2.7
log4j
log4j
1.2.14
org.slf4j
slf4j-log4j12
${slf4j-version}
org.slf4j
slf4j-nop
${slf4j-version}
org.slf4j
slf4j-jdk14
${slf4j-version}
org.slf4j
slf4j-simple
${slf4j-version}
需要注意跟spring相关的jar包的版本问题
保存pom文件后会自动根据配置文件下载所需的jar包。
Step 3 主要配置示例
bean相关配置
在mybatis-servlet.xml配置文件中增加如下的bean,注意schema格式 数据源:
Mybatis Sql Session配置:
由spring接管的mybatis session,configLocation配置的value要和实际的mybatis配置 文件一致。
Mybatis主配置文件
spring-mybatis-config.xml配置文件示例如下:
mapper文件
例如:mapper/user.xml
insert into user values
(#{id}, #{name}, #{age});
update user set
name=#{name},age=#{age} where id=#{id};
Step 4 主要代码
定义Model User.java
package goody9807.springdemo.model;
public class User {
private int id;
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
定义CRUD操作接口
UserMapper.java
package goody9807.springdemo.da;
import goody9807.springdemo.model.User;
public interface UserMapper {
User get(int id);
void insert(User u);
void update(User u);
}
编写Action
在Controller中增加CRUD相关的action。需要先将数据操作的mapper类注入到controller中,增加 代码如下:
@Autowired
private UserMapper _userMapper;
get一个数据实体
@RequestMapping(value = "/get/{id}", method = RequestMethod.GET)
public String get(@PathVariable("id") int id, Model model) { User u = _userMapper.get(id);
model.addAttribute("user", u); return "user";
}
注解RequestMapping说明对应的url,以及http method,其中{id}代表URL参数,和action中的参 数id对应,同时需要在参数id前增加注解:@PathVariable(“id”)
这里使用spring内置的model传递参数到view,在页面上可以采用如下语句获取数据实体内容。
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
User Show
${user.getId()}
Name ${user.getName()}
Age
${user.getAge()}
insert一个数据实体
add的get方法
@RequestMapping(value = "/add", method = RequestMethod.GET ) public String Insert() {
return "add"; }
add的post方法
@RequestMapping(value = "/add", method = RequestMethod.POST ) @ResponseBody
public String Insert(User u) {
_userMapper.insert(u);
return "insert a new user"; }
对应的view
其他update和delete操作和上面基本类似,至此一个简单的单表CRUD程序已经能run起来了。