说明
spring mvc 的环境在 “手把手实战:eclipse 搭建 SpringMvc 框架环境” 中已经搭建完成,那么接下来此会在此基础上把 mybatis 添加进去(前一章由于有很多截图使得篇幅看起来很长,在这章我就不再粘一遍了。我只是把它的代码拿过来,改个工程 的名字来做这篇示例的)
环境准备
eclipse
jdk 1.8
tomcat 7
mysql 5
添加mybatis 所需要的 jar 包及其他包
添加mybatis 所需要的相关配置xml
在 “手把手实战:eclipse 搭建 SpringMvc 框架环境” 中有提过,我在web.xml 中已经配置好了所有src 下的 spring-*.xml 都会被我初始化,所以我这里的命名为 spring-applicationContext.xml。
其内容为
数据源配的是我本地的mysql 库,这个我就不详细说了。下面的两项配置都是mybatis 有关的,一个是mapper 的xml的位置,另一个是mybatis 会自动装配的dao 接口的包位置。
接下来要创建一个对应数据库的实体类和一个dao接口。位置如下
package
com.hlm.bo;
import
java.io.Serializable;
import
java.util.Date;
/**
*
<p>
*
<ul>
Users : 对应hlm_users 表的实体
</ul>
*
<li>
id:主键
</li>
*
<li>
userCode:用户唯一识别码
</li>
*
<li>
userName:用户姓名
</li>
*
<li>
sex:性别
</li>
*
<li>
token:注册令牌,手机或邮箱
</li>
*
<li>
tokenType:令牌类型。0为手机,1为邮箱
</li>
*
<li>
createTime:注册时间
</li>
*
<li>
password:密码
</li>
*
</p>
*
@author
hlm
*
*/
public
class
Users
implements
Serializable{
private
static
final
long
serialVersionUID
= -3452179176154022411L;
private
Long
id
;
private
String
userCode
;
private
String
userName
;
private
Integer
sex
;
private
String
token
;
private
Integer
tokenType
;
private
Date
createTime
;
private
String
password
;
public
Users(){
}
public
Long getId() {
return
id
;
}
public
void
setId(Long
id
) {
this
.
id
=
id
;
}
public
String getUserCode() {
return
userCode
;
}
public
void
setUserCode(String
userCode
) {
this
.
userCode
=
userCode
;
}
public
String getUserName() {
return
userName
;
}
public
void
setUserName(String
userName
) {
this
.
userName
=
userName
;
}
public
Integer getSex() {
return
sex
;
}
public
void
setSex(Integer
sex
) {
this
.
sex
=
sex
;
}
public
String getToken() {
return
token
;
}
public
void
setToken(String
token
) {
this
.
token
=
token
;
}
public
Integer getTokenType() {
return
tokenType
;
}
public
void
setTokenType(Integer
tokenType
) {
this
.
tokenType
=
tokenType
;
}
public
Date getCreateTime() {
return
createTime
;
}
public
void
setCreateTime(Date
createTime
) {
this
.
createTime
=
createTime
;
}
public
String getPassword() {
return
password
;
}
public
void
setPassword(String
password
) {
this
.
password
=
password
;
}
}
|
package
com.hlm.dao;
import
com.hlm.bo.Users;
public
interface
UsersDao {
/**
* 创建用户
*
@param
bo
*/
public
void
createUsers(Users
bo
);
}
|
另外再创建一个包com.hlm.sql 来存放 *Mapper.xml ,也就是前面配置文件中有配置的
UserMapper.xml 中内容如下,在此我只是简单地写了一条新增的语句。该ID对应我usersDao.java 接口中的新增方法名。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
<mapper namespace=
"com.hlm.dao.UsersDao"
>
<insert id=
"createUsers"
parameterType=
"com.hlm.bo.Users"
>
insert into hlm_users(id,user_code,user_name,
sex,token,create_time,password,
token_type )
values(#{id},#{userCode},#{userName},#{sex},#{token},#{createTime},#{password},#{tokenType})
</insert>
</mapper>
|
最后我们改一下原来的UsersController.java
package com.hlm.controller; import javax.servlet.http.HttpServletRequest; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.hlm.bo.Users; import com.hlm.command.UsersCommand; import com.hlm.dao.UsersDao; @Controller public class UsersController { @Resource private UsersDao usersDao ; @RequestMapping("/sigup.do") public ModelAndView sigup(HttpServletRequest req){ ModelAndView mv = new ModelAndView(); UsersCommand cmd = new UsersCommand("小明",0,"[email protected]",1,"123456" ); Users bo = new Users(); BeanUtils.copyProperties(cmd, bo); bo.setUserCode(bo.getUserName()+"1"); usersDao.createUsers(bo); req.getSession().setAttribute("user", bo); mv.addObject("password", bo.getPassword()); mv.addObject("userName", bo.getUserName()); System.out.println(bo.getPassword()); mv.setViewName("index"); return mv; } } |
老样子,部署好tomcat 后启动,启动好后打开浏览器输入网址:http://localhost:8080/springmvcmybatis/
点击后
数据库多了一条数据
题外话
我知道有些同学在网上看到这个mybatis 的xml 配置文件都叫 applicationContext.xml 并不像我这里叫 spring-applicationContext.xml。然后,他们会在web.xml 里多出如下的配置语句
当然,这也是可以,只要能告诉web.xml 哪些xml 文件是需要读到的就行(其实这两种方式虽然效果一样,但实质上是有区别的,好学的同学可以搜一下相关的答案,我这里就不多说了)。但也有些同学采用上面这种方式会遇到问题,看到我上面的大红框里面有两个小红框没,这两个是必需的。有些同学从别年制的时候可能只复制了第一个框中的,第二个框中的就没复制,导致mybatis的配置文件没有生效,启动tomcat 的时候就可能遇到 dao 这个bean 没找到了,因为dao 的bean 的在 mybatis 的配置文件中定义生成 方式的。
最后附上数据表建表语句
|