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文件的,如图
<?xml version="1.0" encoding="UTF-8" ?>主要需要注意的是红色路径不要写错了,可以按住control键点击,如果能点过去就没问题。其他的就是一些mysql语句和mybatis的简单使用了,这个就没什么好说的。
<!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>
第四步:
创建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为例介绍:
/**这里需要注意的就是接口方法名称、传入参数、返回值和mapper必须是一致的就可以。然后Service以及control就正常的修改下就可以,没什么说的。
* 通过@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);
}