使用mybatis实现新建内容,提交,并存入数据库功能
数据库新建数据表
CREATE TABLE `itProject` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`projectName` VARCHAR(50) NULL DEFAULT NULL,
`projectBrief` VARCHAR(50) NULL DEFAULT NULL,
`createTime` DATETIME NULL DEFAULT NULL,
PRIMARY KEY (`id`)
)
COMMENT='项目表'
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;
mappers目录新建ITProject.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org/DTO Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="ITProject">
<resultMap id="itProjectMap" type="ITProject">
<result column="id" property="id" jdbcType="INTEGER"/>
<result column="projectName" property="projectName" jdbcType="VARCHAR"/>
<result column="projectBrief" property="projectBrief" jdbcType="VARCHAR"/>
<result column="createTime" property="createTime" jdbcType="TIMESTAMP"/>
</resultMap>
<insert id="addProject" parameterType="ITProject">
insert into `itProject`(projectName, projectBrief, createTime)
values(#{projectName}, #{projectBrief}, now())
</insert>
</mapper>
parameterType=”ITProject”这里ITProject是一个别名,代表com.xxx.xxx.domain.ITProject。
通过在mybatis-config.xml添加typeAliases实现。
新建ITProject实体类
public class ITProject {
private int id;
private String projectName;
private String projectBrief;
private Date createTime;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getProjectName() {
return projectName;
}
public void setProjectName(String projectName) {
this.projectName = projectName;
}
public String getProjectBrief() {
return projectBrief;
}
public void setProjectBrief(String projectBrief) {
this.projectBrief = projectBrief;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
}
新建ITProjectDao.java
public interface ITProjectDao {
void insert(ITProject itProject);
}
新建ITProjectDaoImpl.java
@Component
public class ITProjectDaoImpl implements ITProjectDao{
@Autowired
private SqlSessionTemplate sqlSessionTemplate;
public void insert(ITProject itProject) {
sqlSessionTemplate.insert("ITProject.addProject", itProject);
}
}
新建ITProjectService.java
@Service
public class ITProjectService {
@Autowired
ITProjectDao itProjectDao;
public void addProject(ITProject itProject) {
itProjectDao.insert(itProject);
return;
}
}
web添加表单
<form role="form" method="post" action="/interfaceTest/addProject">
<div class="form-group">
<label for="projectName">项目名称</label>
<input type="text" class="form-control" id="projectName" name="projectName" placeholder="请输入项目名称">
<label for="projectBrief">项目简介</label>
<input type="text" class="form-control" id="projectBrief" name="projectBrief" placeholder="请输入项目简介">
</div>
<button type="submit" class="btn btn-primary">提交</button>
<button type="button" class="btn btn-default" data-dismiss="modal">关闭</button>
</form>
controller中添加表单处理
@RequestMapping(value = "/addProject", method = {RequestMethod.POST})
public ModelAndView itAddProject(@RequestParam String projectName, @RequestParam String projectBrief){
ModelAndView modelAndView = new ModelAndView();
ITProject itProject = new ITProject();
itProject.setProjectName(projectName);
itProject.setProjectBrief(projectBrief);
itProjectService.addProject(itProject);
······
return modelAndView;
}
常见问题
数据库插入中文不成功
- 查看web页面charset配置是否是utf-8
- 查看数据库连接配置:jdbc.url=jdbc:mysql://192.168.xx.xx:3306/xxx?characterEncoding=UTF-8
- 查看数据库配置是否是utf-8,如果不是,要重新简表
插入语句包含多个字段
- insert配置的paramType只允许传一个参数
- 方法一:创建实体类,通过实体类传参
- 方法二:创建一个Map对象,传入Map对象