早上整合完spring+pringmvc+hibernate框架,趁热打铁整合下spring+pringmvc+mybatis其实都差不多 就是hibernate和mybatis换一下相关配置就好了
1.首先新建一个项目大概的结构如下:我就不解释具体的分层了:
相关的jar包
2.配置文件:其他的配置基本一样 就这个文件贴出来吧
(1)applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 只解析除controller之外的注解(即解析service、dao), 避免重复加载导致事务失效 -->
<context:component-scan base-package="com.ldy" />
<!-- 配置数据源 -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/ldybase?characterEncoding=UTF-8" />
<property name="username" value="root" />
<property name="password" value="123456" />
</bean>
<!-- 事务管理器 -->
<!-- 让spring管理sqlsessionfactory 使用mybatis和spring整合包中的 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 数据库连接池 -->
<property name="dataSource" ref="dataSource" />
<!-- 加载mybatis的全局配置文件 -->
<property name="configLocation" value="classpath:config/sqlConfig.xml" />
</bean>
<!-- 自动扫描 将Mapper接口生成代理注入到Spring -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.ldy.mapper" />
</bean>
</beans>
3.配置完xml文件就剩简单的代码实现了。
(1)UserAction.java
package com.ldy.action;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.ldy.model.User;
import com.ldy.service.UserService;
/**
* 用户action层与前端交互
* @author ldy
*
*/
@Controller
@RequestMapping("/user")
public class UserAction {
@Autowired
private UserService userService;
/**
* 添加用户数据
* @param request request
*/
@RequestMapping(value = "/addUser.do")
public String addUser(HttpServletRequest request) throws Exception {
//获取用户信息
try {
String name = request.getParameter("name");
String password = request.getParameter("password");
int age = Integer.parseInt(request.getParameter("age"));
System.out.println(name+" "+password+" "+age);
User user=new User();
user.setName(name);
user.setAge(age);
user.setPassword(password);
userService.addUser(user);
return "/success";
} catch (Exception e) {
e.printStackTrace();
return "/error";
}
}
}
(2)UserService.java和UserServiceImpl.java写一起了
package com.ldy.service;
import com.ldy.model.User;
/**
* 用户逻辑处理接口层
* @author ldy
*/
public interface UserService {
public void addUser(User user);
}
----------------------------------------------------------------------------------------------
package com.ldy.service.impl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.ldy.mapper.UserMapper;
import com.ldy.model.User;
import com.ldy.service.UserService;
/**
* 用户逻辑处理实现层
* @author ldy
*/
@Service
@Transactional
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
/**
* 添 加用户数据
* @param user 用户对象
*/
public void addUser(User user){
userMapper.insert(user);
}
}
(3)UserMapper.java和UserMapper.xml写一起
package com.ldy.mapper;
import com.ldy.model.User;
public interface UserMapper {
public void insert(User user);
}
--------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ldy.mapper.UserMapper">
<insert id="insert" parameterType="com.ldy.model.User">
<selectKey keyProperty="id" resultType="String" order="BEFORE">
select replace(uuid(), '-', '') as id from dual
</selectKey>
insert into user values(#{id},#{name},#{password},#{age})
</insert>
</mapper>
(4)User.java这个就是数据库对应的实体类了。我这边没有配置数据库映射文件hbm.xml 因为我直接在实体类上用注解去和数据库对应上,感觉这样比较省事。然后我user表的id是varchar类型的是系统产生的32位的uuid
package com.ldy.model;
/**
* 用户实体类
* @author ldy
*
*/
public class User {
private String id ;
private String name;
private String password;
private int age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}