开始学习java开源框架,今天带来的是Spring+SpringMVC+Mybatis框架的整合,并附带一个简单的用户增删该查demo,如有不严谨的地方,恳请各位大神指正,谢谢!
我所用到的框架版本是Spring3.2.13,Mybatis3.2.8,数据库用的是MySQL所用的开发IDE是Eclipse(Myeclipse和eclipse一样就不重复演示了)好了不说废话了,进入正题!!!
1,在eclipse中创建动态web项目spring_mvc_mybatis
2,导入jar包
2.1导入spring包,所有19个
2.2,导入mybatis包和整合包2个
2.3,导入数据库驱动
2.4,导入数据源和连接池(dbcp或者c3p0),我这里用的是dbcp2个
2.5,AOP依赖包3个,aop代理1个
2.6,日志包commons-logging.jar log4j.jar两个
2.7,标签库jstl.jar standard.jar两个
2.8,文件上传commons-io commons-fileupload commons-lang三个
2.9,json支持jackson包
2.10,导入Junit单元测试包
3,在web.xml中创建spring Servlet容器,和中文编码过滤器
may26test
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:beans.xml
may26test
*.do
characterEncoding
org.springframework.web.filter.CharacterEncodingFilter
encoding
utf-8
characterEncoding
*.do
4,创建beans.xml(applicationContext.xml)
5,引入jdbc.properties 和log4j.properties配置文件,至此,准备工作就做完了,接下来了做一个简单的用户增删该查,测试一下我们的环境是否正确
6,创建Mybatis的Annotation--->MybatisRepository spring容器在扫描的时候只扫描带有该注解的mapper
package com.may26.testuser.base;
import org.springframework.stereotype.Component;
@Component
public @interface MybatisRepository {
}
7,创建实体类User
package com.may26.testuser.entity;
public class User {
private Integer id;
private String name;
private String loginName;
private String password;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
8,创建dao(mapper)接口,实现实体的CRUD
8.1BaseDao
package com.may26.testuser.base;
import java.util.List;
public interface BaseDao {
/**查询所有*/
List listAll();
/**根据id查询实体*/
T findById(Integer id);
/**根据名称查找实体*/
T findByName(String name);
/**增加实体*/
void save(T emtity);
/**删除实体*/
void delete(Integer id);
/**更新实体*/
void update(T entity);
}
8.2,UserMapper
package com.may26.testuser.dao;
import com.may26.testuser.base.BaseDao;
import com.may26.testuser.base.MybatisRepository;
import com.may26.testuser.entity.User;
@MybatisRepository
public interface UserMapper extends BaseDao {
/**根据登陆名查找用户*/
User findByLoginName(String longinName);
}
9,创建UserMapper.xml文件
insert into user (id,name,loginName,password) values (
#{id},
#{name},
#{loginName},
#{password}
)
delete from user where id = #{id}
update user set
name=#{name},
loginName=#{loginName},
password=#{password}
where id=#{id}
10,测试Mapper
package com.may26.testuser.test;
import java.util.List;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.may26.testuser.dao.UserMapper;
import com.may26.testuser.entity.User;
public class TestUserMapper {
private ApplicationContext ctx = new ClassPathXmlApplicationContext("beans.xml");
private UserMapper userMapper = ctx.getBean(UserMapper.class);
@Test
public void testSave(){
for(int i = 0;i<=10;i++){
User u = new User();
u.setName("李四"+i);
u.setLoginName("ls"+i);
u.setPassword("123");
userMapper.save(u);
}
}
@Test
public void testDelete(){
userMapper.delete(1);
}
@Test
public void testFindById(){
User u = userMapper.findById(2);
System.out.println(u.getName()+"---"+u.getLoginName()+"---"+u.getPassword());
}
@Test
public void testFindByName(){
User u = userMapper.findByName("张三");
System.out.println(u.getName()+"---"+u.getLoginName()+"---"+u.getPassword());
}
@Test
public void testFindByLoginName(){
User u = userMapper.findByLoginName("zs");
System.out.println(u.getName()+"---"+u.getLoginName()+"---"+u.getPassword());
}
@Test
public void testListAll(){
List list = userMapper.listAll();
for(User u : list){
System.out.println(u.getName());
}
}
}
11,service层
package com.may26.testuser.service;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.may26.testuser.dao.UserMapper;
import com.may26.testuser.entity.User;
@Service
@Transactional
public class UserService {
@Resource
private UserMapper userMapper;
public List listAll() {
List list = userMapper.listAll();
return list;
}
public User findById(int id) {
User u = userMapper.findById(id);
return u;
}
public void saveUser(String name, String loginName, String password) {
User u = new User();
u.setLoginName(loginName);
u.setName(name);
u.setPassword(password);
userMapper.save(u);
}
public void deleteUser(int id) {
userMapper.delete(id);
}
public void updateUser(int id, String name, String loginName,
String password) {
//需要判断参数是否为空
User u = userMapper.findById(id);
u.setLoginName(loginName);
u.setName(name);
u.setPassword(password);
userMapper.update(u);
}
}
12,controller层
package com.may26.testuser.web;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import com.may26.testuser.entity.User;
import com.may26.testuser.service.UserService;
@Controller
@RequestMapping("user")
public class UserController{
@Resource
private UserService userService;
@RequestMapping(value="list.do")
//@ResponseBody
public String listAll(Model model){
List userList = userService.listAll();
model.addAttribute("userList", userList);
//return userList;
return "/user/list";
}
/**用户详细信息*/
@RequestMapping("userInfo.do")
public String findById(int id,Model model){
User user = userService.findById(id);
model.addAttribute("user", user);
return "/user/userInfo";
}
/**增加用户*/
@RequestMapping("add.do")
public String saveUser(String name,String loginName,String password,Model model){
userService.saveUser(name,loginName,password);
List userList = userService.listAll();
model.addAttribute("userList", userList);
return "/user/list";
}
@RequestMapping("addUI.do")
public String saveUserUI(){
return "/user/add";
}
/**删除用户*/
@RequestMapping("delete.do")
public String deleteUser(int id,Model model){
userService.deleteUser(id);
List userList = userService.listAll();
model.addAttribute("userList", userList);
return "user/list";
}
/**修改用户*/
@RequestMapping("update.do")
public String updateUser(int id,String name,String loginName,String password ,Model model){
userService.updateUser(id,name,loginName,password);
List userList = userService.listAll();
model.addAttribute("userList", userList);
return "user/list";
}
@RequestMapping("updateUI.do")
public String updateUserUI(int id,Model model){
User user = userService.findById(id);
model.addAttribute("user", user);
return "user/update";
}
}
13,JSP页面
好了,完整的Spring+SpringMVC+Mybatis整合到此结束了,欢迎观看