设为首页 收藏本站
查看: 829|回复: 0

[经验分享] MyBatis学习笔记2

[复制链接]

尚未签到

发表于 2016-11-25 08:45:07 | 显示全部楼层 |阅读模式
  本次讲述的是MyBatis整合Struts2和Spring3的示例。
  本文中使用的框架版本号为MyBatis3.1.0,Struts2.3.1.2,Spring3.1.1。
  相关下载地址不再赘述,请读者自寻搜索下载。
  本例中还使用到了其他的jar包,如commons-dbcp,commons-collections,commons-logging,commons-pool,log4j,slf4j。所需要的所有jar包截图如下:
  
DSC0000.png
  1.建立一个web工程ssm,选择好运行环境:
  
DSC0001.png
  2.导入上图中所有的jar包,文件组织方式如图所示:
  
DSC0002.png
  2.在MySQL中建立数据库mybatis,
  建表语句如下:

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(100) DEFAULT NULL,
`password` varchar(100) DEFAULT NULL,
`role` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=utf8;
INSERT INTO `user` VALUES ('1', 'zhangsan', '123456', 'user');
INSERT INTO `user` VALUES ('2', 'lisi', '123456', 'user');
INSERT INTO `user` VALUES ('3', 'admin', 'admin', 'admin');
  3.工程中的文件源码如下:


  • UserMapper.java

package com.ssm.mapper;
import com.ssm.pojo.User;
public interface UserMapper {
int insertUser(User user);
User selectUser(int id);
}


  •  UserMapper.xml

<?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.ssm.mapper.UserMapper">
<select id="selectUser" parameterType="int" resultType="com.ssm.pojo.User">
select * from User where id = #{id}
</select>
<insert id="insertUser" parameterType="com.ssm.pojo.User" useGeneratedKeys="true" keyProperty="id">
insert into User(username,password,role)
values(#{username},#{password},#{role})
</insert>
</mapper>


  •  User.java

package com.ssm.pojo;
import java.io.Serializable;
public class User implements Serializable {
private static final long serialVersionUID = -4260619761538644683L;
private Integer id;
private String username;
private String password;
private String role;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getRole() {
return role;
}
public void setRole(String role) {
this.role = role;
}
}


  •  UserService.java

package com.ssm.service;
import org.springframework.beans.factory.annotation.Autowired;
@Service(value="userService")
public class UserService {
@Autowired
private UserMapper userMapper;
//让Spring帮助进行事务回滚
@Transactional
public User register(User user){
//此处的length表示的是更改生效的行数,大于0即表示新增成功,然后user对象的id值被自动赋予新值
int length = userMapper.insertUser(user);
if (length>0) {
return user;
}else {
//新增失败,抛出异常,让spring进行事物回滚
throw new RuntimeException();
}
}
}


  •  UserAction.java

package com.ssm.web;
import javax.annotation.Resource;
@Namespace(value="/work")
public class UserAction extends ActionSupport {
private static final long serialVersionUID = 8907605561460172723L;
@Resource(name="userService")
private UserService userService;
private User userReg;
public User getUserReg() {
return userReg;
}
public void setUserReg(User userReg) {
this.userReg = userReg;
}
@Action(value="user", results={
@Result(name="success",location="/WEB-INF/content/success.jsp"),
@Result(name="error",location="/WEB-INF/content/error.jsp")
})
public String register(){
userReg = userService.register(userReg);
if (userReg!=null) {
return SUCCESS;
}else {
return ERROR;
}
}
}


  •  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:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
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.1.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/jdbc
http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd">
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<property name="ignoreResourceNotFound" value="true" />
<property name="locations">
<list>
<value>classpath*:/config.properties</value>
</list>
</property>
</bean>
<!-- 开启注解配置 -->  
<context:annotation-config />
<!-- 扫描service层 -->
<context:component-scan base-package="com.ssm.service" />
<!-- 开启事务注解驱动 -->  
<tx:annotation-driven />
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="typeAliasesPackage" value="com.ssm.pojo" />   
</bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<!-- 自动扫描映射器 -->  
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
<property name="basePackage" value="com.ssm.mapper" />  
</bean>
</beans>


  •  config.properties

#mysql version database setting
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:9906/mybatis
jdbc.username=root
jdbc.password=root


  •  log4j.properties

# Rules reminder:
# DEBUG < INFO < WARN < ERROR < FATAL
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# My logging configuration...
log4j.logger.org.mybatis.jpetstore=DEBUG
## Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p %d %C: %m%n


  •  struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<constant name="struts.devMode" value="true" />
<constant name="struts.convention.package.locators" value="web" />
<constant name="struts.convention.default.parent.package"
value="params-default" />
<package name="params-default" extends="convention-default">
<interceptors>
<interceptor-stack name="paramsStack">
<interceptor-ref name="store">
<param name="operationMode">AUTOMATIC</param>
</interceptor-ref>
<interceptor-ref name="paramsPrepareParamsStack" />
</interceptor-stack>
</interceptors>
<default-interceptor-ref name="paramsStack" />
</package>
</struts>


  •  register.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>注册页面</title>
</head>
<body>
欢迎注册,请在这里输入必要的注册信息:
<s:form action="work/user!register.action" method="post">
<s:textfield name="userReg.username" label="用户名"></s:textfield>
<s:password name="userReg.password" label="密码"></s:password>
<s:textfield name="userReg.role" label="角色"></s:textfield>
<s:submit value="提交"></s:submit>
</s:form>
</body>
</html>
  4.运行该工程,截图如下:
  
DSC0003.png
  
DSC0004.png
  
DSC0005.png
 5.至此,示例结束,相关源码放在附件中。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-305209-1-1.html 上篇帖子: Mybatis控制台输出SQL问题 下篇帖子: MyBatis的动态SQL语言
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表