暑假学习3

              在上次的SpringMVC的框架基础上,我们知道了model可以传送一个引用数据类型,即一个实例,我们可以通过一个类的对象,在本次学习中使用的是UserBean这个类,它的可以将页面上的多个属性进行传值到controller,然后由controller(控制器)来控制展示响应页面,然后model可以将接受到的值全部或部分显示在响应界面中,省去了我们对多个传入数据的定义,使多个数据以整体的形式存储。代码如下:

    @RequestMapping(value = "/init", method = RequestMethod.POST)
    public String initLogin(UserBean userBean, Model model) {
    	
    	UserBean result = helloWorldService.searchUser(userBean);
    	model.addAttribute("userBean", result);
        return "login";
    }

            在上面的代码中,它调用了helloWorldservice这个对象,这个对象是通过自动注入创建的(@Autowired),当然使用自动注入也需要在这个对象的类中有(@Service),即标注该类作为一个Service来起作用。在这个类中有searchUser方法,这个方法的作用是返回一个UserBean的一个对象,但是它的返回值是通过QueryDao类的一个对象来执行excuteForObject方法得到的

@Service
public class HelloWorldService {

	@Autowired
	QueryDAO queryDao;

	@Autowired
	UpdateDAO updateDao;

	
	public UserBean searchUser(UserBean frm) {
		frm = queryDao.executeForObject("User.selectUser", null, UserBean.class);
		//frm.setUserId("test");

		
		return frm;
	}

                  在上边的方法调用时有三个参数,一个是SqlMap文当中的命名空间.对应操作的id属性值,另一个是要传入的参数,最后是要返回的数据类型。下边是SqlMap.xml文件中的内容:

<?xml version="1.0" encoding="UT<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE sqlMap
            PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
            "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<!-- SqlMap定義 -->
<sqlMap namespace="User">
	<select id="selectUser"
		parameterClass="cn.training.bean.UserBean"
		resultClass="cn.training.bean.UserBean">
		SELECT
		user_id as userId
		FROM
		user
		WHERE
		user_id = 'admin'
	</select>
</sqlMap>

                  由于本次操作并没有传值,所以使用的条件语句是user_id=‘admin’,当然admin已经在我们的user表中已经存在,我们只是将‘admin’的user_id值返回,但是在选择语句执行时,通常我们会对自己输入的数据进行查询,这就需要将输入的数据进行传值,我们通过的方法是将数据传入的值通过model的addAttribute方法来记忆传入的值,然后通过WHERE user_id=#userId#  来将传入的值用于SQL语句中,注意在sqlMap中sql语句需要大写,需要引用数据类型作为参数或者返回值是要在相应的标签中加入参数所在的类的地址。本次操作需要数据库的连接,我们需要配置数据库的资源文件context.xml,在这个文件中我们需要输入连接数据库的用户名和密码,在url值中加入要访问的数据库名称,本工程中数据库名称为test,用户名和密码均为root。

<Context>
<Resource
name="jdbc/TerasolunaSampleDataSource"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
username="root"
password="root"
url="jdbc:mysql://localhost:3306/test"
useUnicode="true"   characterEncoding="UTF-8"   maxIdle="2"   maxWait="5000"  maxActive="4"/>
</Context>

            在上边我们使用了queryDao类,对于queryDao这个类是通过ibatis来映射资源文件。

<bean id="queryDAO" class="jp.terasoluna.fw.dao.ibatis.QueryDAOiBatisImpl">
<property name="sqlMapClient" ref="sqlMapClient" />
</bean>

               在本工程的第二个应用中,我们尝试了对两个属性传值,但是在跳转另一个页面传值过程中只保存了相应页面显示了的值,而并没有把之前页面的值保留,这使我们在应用中需要先将之前的值保留在一个变量中,然后通过设置属性值的方法来传值。实现当前页面没有显示的值的保存。下边的代码是关于sqlMap的配置文件,通过这个文件我们可以找到sqlMap的资源文件在UserSqlMap.xml文件中

<sqlMapConfig>
<settings useStatementNamespaces="true" />
<typeHandler jdbcType="BLOB" 
javaType="[B" callback="org.springframework.orm.ibatis.support.BlobByteArrayTypeHandler" />
<sqlMap resource="UserSqlMap.xml" />
</sqlMapConfig>


转载于:https://my.oschina.net/u/2411765/blog/478601

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值