SpringSide使用MyBatis框架

        SpringSide的框架进行快速开发的方便之处这里就不多介绍和说明了,这里以SpringSide4来进行讲解,项目大家可以去GitHub上下载:https://github.com/springside/springside4,

下载完毕之后,我们就可以已当前下的springside作为模板创建自己的项目了,具体怎么创建,github上面有介绍,如果大家还是不清楚,看我另外一篇文章介绍,稍后放出。

创建完毕之后,默认它是使用hibernate的,数据库是h2,我这里讲解的是mybatis和mysql的,怎么更换为mysql请看我另外一篇文章介绍,稍后放出。

第一步:

到项目的pom.xml文件中添加mybatis版本信息

<mybatis.version>3.2.5</mybatis.version>

放到主要依赖库的版本定义中,然后再在下面添加版本信息

<!-- mybatis-->

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis</artifactId>

<version>${mybatis.version}</version>

</dependency>

<dependency>

<groupId>org.mybatis</groupId>

<artifactId>mybatis-spring</artifactId>

<version>1.2.2</version>

</dependency>

放到<!--依赖项定义 -->中,这样第一步就完成了。

第二步:

在Main/resources下面的applicationContext.xml添加MyBatis相关的配置文件:

<!--MyBatis配置 -->

<beanid="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean">

<propertyname="dataSource" ref="dataSource" />

<!-- 自动扫描entity目录,省掉Configuration.xml里的手工配置 -->

<propertyname="typeAliasesPackage"value="org.springside.examples.quickstart.entity" />

<!-- 显式指定Mapper文件位置 -->

<propertyname="mapperLocations"value="classpath:/mybatis/*Mapper.xml" />

</bean>

<!-- 扫描basePackage下所有以@MyBatisRepository标识的接口-->

<beanclass="org.mybatis.spring.mapper.MapperScannerConfigurer">

<propertyname="basePackage"value="org.springside.examples.quickstart" />

<propertyname="annotationClass"value="org.springside.examples.quickstart.repository.MyBatisRepository"/>

</bean>

这里放在环境的上面,并且需要替换上面的包,根据自己的项目来进行替换,需要替换的地方我用红色标示出来了。

第三步:

创建Mapper文件,在main/resources下面创建一个mybatis文件夹,里面主要是放mapper文件的,如图


然后就在里面写mapper文件,这个我以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">
<!-- namespace必须指向Dao接口 -->
<mapper namespace="<span style="color:#ff0000;">com.soooft.crashreport.repository.UserDao</span>">
	<!--
		获取用户: 输出直接映射到对象, login_name列要"as loginName"以方便映射 ,team_id as "team.id"创建team对象并赋值
	-->
	<select id="get" parameterType="long" resultType="User">
		select id, name, roles,
		login_name as loginName
		from cr_user
		where id=#{id}
	</select>
	
	<select id="findByLoginName" resultType="User">
	   select a.id, a.name,salt,roles,roles,loginName,password
	   from cr_user a
	   where loginName=#{loginName}
	</select>

	<!-- 查询用户,演示: 1.输入用map传入多个参数 2.<where>语句, 智能添加where和and关键字 3.输出直接映射对象 -->
	<select id="search" parameterType="map" resultType="User">
		select id, name, roles,
		login_name as loginName,
		from cr_user
		<where>
			<if test="loginName != null">
				login_name=#{loginName}
			</if>
			<if test="name != null">
				and name=#{name}
			</if>
		</where>
	</select>

	<!-- 插入用户: 1.由数据库生成id并赋值到user对象 2.输入用对象, 嵌套属性表达式#{team.id} -->
	<insert id="save" parameterType="User" useGeneratedKeys="true" keyProperty="id">
		insert into cr_user (
		login_name, name, password, roles)
		values (
		#{loginName}, #{name}, #{password}, #{roles})
	</insert>
	
	<!-- 删除用户 -->
	<delete id="delete" parameterType="long">
	     delete from cr_user where id=#{id}
	</delete>
</mapper> 
主要需要注意的是红色路径不要写错了,可以按住control键点击,如果能点过去就没问题。其他的就是一些mysql语句和mybatis的简单使用了,这个就没什么好说的。
第四步:

创建Dao接口,这个项目本身就有,不过我们需要更改一下,找到dao接口所在的地方,首先创建一个文件MyBatisRepository.java,

里面如下:

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 标识MyBatis的DAO,方便{@link org.mybatis.spring.mapper.MapperScannerConfigurer}的扫描。
 * 
 * 
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface MyBatisRepository {
}
用处上面的注释已经说明了。

然后再修改或者创建其他dao接口,还是以UserDao为例介绍:

/**
 * 通过@MapperScannerConfigurer扫描目录中的所有接口, 动态在Spring Context中生成实现.
 * 方法名称必须与Mapper.xml中保持一致.
 * 
 * @author calvin
 */
@MyBatisRepository
public interface UserDao {
	
	User findByLoginName(String loginName);
	
	List<User> findAll();
	
	User findOne(long id);
	
        void save(User user);
	
	void update(User user);

	void delete(Long id);
	
}
这里需要注意的就是接口方法名称、传入参数、返回值和mapper必须是一致的就可以。然后Service以及control就正常的修改下就可以,没什么说的。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值