spring+SpringMVC+mybatis框架搭建(下篇)

配置部分就先到此,接下来我们要对MySQL数据库中的数据进行操作。


主要任务:完善sql语句,配置方法,测试结果。


1、完善UserDao.xml
①sql语句整合

<sql id="sqlWhere">
		<where><!-- 这种写法会自动去掉第一个and -->
			<if test="username!=null and username!=''">
			 and username = #{username}
			</if>
			<if test="pwd!=null and pwd!=''">
			 and pwd = #{pwd}
			</if>
			<!-- id与字符串判断区别 -->
			<if test="id != null">
			 and id = #{id}
			</if>
			<if test="realname != null and realname !=''">
			 and realname like concat('%', #{realname},'%')
			 <!-- 中文不能显示,英文可以 -->
			 <!--"%"#{realname}"%"  -->
			</if>
		</where>
	</sql>

此部分将我们所需要的值列了出来。
②sql语句——查询

<!--查询列表  -->
	<select id="list" parameterType="user" resultType="user">
		select * from user 
		<include refid="sqlWhere" />
	</select>

③sql语句——添加

<!-- id不需要,自增 -->
	<insert id="create" parameterType="user">
		insert into user(username,pwd,realname)
		values(#{username},#{pwd},#{realname})
	</insert>

④sql语句——更新

<update id="update" parameterType="user">
		update user
		<set>
			<if test="username!=null and username!=''">
			 	username = #{username},
			</if>
			<if test="pwd!=null and pwd!=''">
			 	pwd = #{pwd},
			</if>
			<if test="realname != null and realname !=''">
			 	realname = #{realname},
			</if>
		</set>
		where id = #{id}
	 	<!-- set username = #{username}, pwd = #{pwd} where id = #{id} -->
	</update>

⑤sql语句——删除

<delete id="delete" parameterType="integer">
		delete from user where id = 
		#{id}
	</delete>

⑥批量操作

<!-- 批量操作 -->
	<update id="updateBatch" parameterType="List">
		update user set pwd='123' where id in
		<foreach item="item" index="index" collection="list"
			open="(" separator="," close=")">
			#{item}
		</foreach>
	</update>

以上六部分是在UserDao.xml中的’mapper’标签中写的。

2、配置包中类的各种方法。
①根据上一步中可以在UserDao.java中创造一下几个方法

package com.lf.dao;

import java.util.List;

import com.lf.model.User;

public interface UserDao {
	public List<User> list(User user);
	public void create(User user);
	public void update(User user);
	public void delete(Integer id);
	public void updateBatch(List<Integer> list);
}

②接口UserService中同样也要配置。

package com.lf.service;

import java.util.List;

import com.lf.model.User;

public interface UserService {
	
	public List<User> list(User user);
	public void create(User user);
	public void update(User user);
	public void delete(Integer id);
	public void updateBatch(List<Integer> list);
}

③继承接口的类UserServiceImpl也要加入相应的方法。

package com.lf.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.lf.dao.UserDao;
import com.lf.model.User;

@Service
public class UserServiceImpl implements UserService {
	
	@Autowired
	private UserDao userDao;
	
	@Override
	public List<User> list(User user) {
		return userDao.list(user);
	}

	@Override
	public void create(User user) {
		userDao.create(user);
	}

	@Override
	public void update(User user) {
		userDao.update(user);
	}

	@Override
	public void delete(Integer id) {
		userDao.delete(id);
	}

	@Override
	public void updateBatch(List<Integer> list) {
		userDao.updateBatch(list);	
	}
}

④测试以上代码是否正确。
在controller层中的Usercontroller中添加相应测试代码

@ResponseBody
	@RequestMapping("/create.do")
	public boolean create(User user){
		try{
			userService.create(user);
		}catch(Exception e){
			System.out.println(e.getMessage());
			return false;
		}
		return true;
	}

3、添加log4j.properties
在src下添加一个文件,名叫log4j.properties,此文件是来输出程序的调试信息等内容的。

# Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.org.mybatis.example.BlogMapper=TRACE
log4j.logger.com.lf=DEBUG
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

4、测试结果
①测试是否可以根据realname的值查找到相应值。
地址栏输入的地址如下,若显示出来,则正确了。
在这里插入图片描述
②测试向user表中添加数据。
在这里插入图片描述
在这里插入图片描述
可见添加成功了,说明代码没问题。

③log4j.properties有什么用呢?为了实验,我将建表时候的id 自增长给取消,然后进行了测试,在屏幕上会打印以下信息。
在这里插入图片描述
在上图中我们可以看到,我们犯的错误是:数据库中id的值不存在默认值,那么我们可以很轻易的对我们的代码进行修改。
好的,先到这里了~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值