MyBatis学习笔记2

本文介绍了一个使用MyBatis 3.1.0、Struts2 2.3.1.2及Spring 3.1.1搭建的整合示例。该示例包括了数据库操作、服务层逻辑处理、事务管理等内容。

本次讲述的是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包截图如下:


1.建立一个web工程ssm,选择好运行环境:


2.导入上图中所有的jar包,文件组织方式如图所示:


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.运行该工程,截图如下:

 





 5.至此,示例结束,相关源码放在附件中。

 

转载于:https://my.oschina.net/u/1030729/blog/698073

已经博主授权,源码转载自 https://pan.quark.cn/s/a4b39357ea24 常见问题解答 网页打开速度慢或者打不开网页? 受到多种因素的影响,对于非会员用户我们无法提供最优质的服务。 如果您希望得到最棒的体验,请至大会员页面("右上角菜单 → 大会员")根据说明操作。 请注意:受制于国际网络的诸多不确定性,我们无法对任何服务的可靠性做出任何保证。 如果出现了网络连接相关的问题,我们建议您先等待一段时间,之后再重试。 如果您在重试后发现问题仍然存在,请联系我们,并说明网络问题持续的时间。 图片下载后无法找到? 打开"右上角菜单 → 更多 → 修改下载路径",在弹出的对话框中可以看到当前图片的保存路径。 此外,由于网络因素,在保存图片之后,等待屏幕下方出现"已保存到..."后,才能在本地找到图片。 如何更改图片保存的目录? 请参见"右上角菜单 → 更多 → 修改下载路径"。 翻页不方便? 在点进某个图片后,通过在图片上向左或向右滑动,即可翻页查看下一个作品。 如何保存原图/导出动图? 长按图片/动图,在弹出的菜单中选择保存/导出即可。 输入账号密码后出现"进行人机身份验证"? 此为pixiv登陆时的验证码,请按照要求点击方框或图片。 在pxvr中注册pixiv账号后,收到验证邮件,无法访问邮件中的验证链接? 请复制邮件中的链接,打开pxvr中的"右上角菜单 → 输入地址"进行访问。 能否自动将页面内容翻译为汉语? 很抱歉,pxvr暂不提供语言翻译服务。 图片下载类型是否可以选择? 能否批量下载/批量管理下载? 已支持批量下载多图作品中的所有原图:找到一个多图作品,进入详情页面后,点击图片进入多图浏览模式,长按任意一张图片即可看到批量下载选项。 关于上述其他功能,我们...
考虑局部遮阴的光伏PSO-MPPT控制模型(Simulink仿真实现)内容概要:本文介绍了基于Simulink仿真实现的考虑局部遮阴的光伏PSO-MPPT控制模型,旨在通过粒子群优化(PSO)算法解决光伏发电系统在局部阴影条件下最大功率点跟踪(MPPT)的效率问题。文档不仅提供了该模型的技术实现方法,还列举了大量相关的MATLAB/Simulink仿真资源,涵盖电力系统、智能优化算法、机器学习、路径规划、信号处理等多个科研方向,适用于复现高水平期刊论文和开展创新性研究。文中强调科研需逻辑缜密、善于借力,并提倡结合实际仿真与理论分析以提升研究深度。 适合人群:具备一定电力电子、自动控制或新能源背景,熟悉MATLAB/Simulink环境,从事光伏系统优化、智能算法应用或相关领域研究的研发人员及硕博研究生。 使用场景及目标:①研究局部遮阴下光伏系统MPPT控制策略的性能提升;②利用PSO等智能优化算法解决非线性、多峰值优化问题;③复现SCI/EI级别论文中的MPPT控制模型;④开展光伏系统建模与仿真教学或项目开发。 阅读建议:建议读者结合文档提供的网盘资源,下载完整代码与模型文件,按照目录顺序逐步学习,重点理解PSO算法在MPPT中的应用机制,并通过修改参数、对比实验等方式深入掌握仿真细节,提升工程实践与科研创新能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值