spring-mybatis.xml 文件里配置了数据源,使用的是阿里巴巴的Druid数据库连接池。
然后是mybatis配置,在sqlSessionFactory里注入dataSource,扫描各种Mapping文件。
最后配置事务管理。
下面再看一下AddMapping.xml 。
dao层编写一个接口文件,如下所示:
package me.lyshi.mvc.dao;
import java.util.List;
import me.lyshi.mvc.model.Add;
public interface AddMapper {
int insertSelective(Add addInfo);
List<Add> getAll();
int deleteByPrimaryKey(String id);
Add selectByPrimaryKey(String id);
int updateByPrimaryKeySelective(Add add);
}
接口里面的方法名,对应Mapping中的id属性,比如上面的getAll(),需要返回List<Add>,在Mapping中应这样写:
<resultMap type="me.lyshi.mvc.model.Add" id="BaseResultMap">
<id column="id" property="id" jdbcType="VARCHAR" />
<result column="name11" property="name" jdbcType="VARCHAR" />
<result column="pwd11" property="pwd" jdbcType="VARCHAR" />
</resultMap>
<!-- 获取所有的记录,返回记录的格式如上面的resultMap中的BaseResultMap定义的实体-->
<select id="getAll" resultMap="BaseResultMap">
SELECT * FROM tadd
</select>
如果是查询某id的某条记录,接口里定义方法 Add selectByPrimaryKey(String id);,传入id参数,返回实体Add,在Mapping中应这样写:
<resultMap type="me.lyshi.mvc.model.Add" id="BaseResultMap">
<id column="id" property="id" jdbcType="VARCHAR" />
<result column="name11" property="name" jdbcType="VARCHAR" />
<result column="pwd11" property="pwd" jdbcType="VARCHAR" />
</resultMap>
<!-- 根据id获得记录 -->
<select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.String" >
SELECT
<include refid="Base_Column_List"/>
FROM tadd
WHERE id= #{id,jdbcType=VARCHAR}
</select>
如果是新增一条记录,接口里定义方法 int insertSelective(Add addInfo); 插入实体,返回成功与否,在Mapping中应该这样写:
<!-- 新增 -->
<insert id="insertSelective" parameterType="me.lyshi.mvc.model.Add" >
INSERT INTO tadd
<trim prefix="(" suffix=")" suffixOverrides="," >
<if test="id != null" >
id,
</if>
<if test="name != null" >
name,
</if>
<if test="pwd != null" >
pwd,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides="," >
<if test="id != null" >
#{id,jdbcType=VARCHAR},
</if>
<if test="name != null" >
#{name,jdbcType=VARCHAR},
</if>
<if test="pwd != null" >
#{pwd,jdbcType=VARCHAR},
</if>
</trim>
</insert>
trim标签表示,prefix表示加上前缀,suffix 表示加上后缀,suffixOverrides表示把尾部的某些内容覆盖,可以去掉尾部多余的逗号。
如果是修改一条记录,接口里定义方法 int updateByPrimaryKeySelective(Add add); 更新实体,返回成功与否,在Mapping中应该这样写:
<!-- 修改某条记录 -->
<update id="updateByPrimaryKeySelective" parameterType="me.lyshi.mvc.model.Add">
UPDATE tadd
<trim prefix="SET" suffixOverrides=",">
<if test="name !=null">
name = #{name,jdbcType=VARCHAR},
</if>
<if test="pwd !=null">
pwd = #{pwd,jdbcType=VARCHAR},
</if>
</trim>
WHERE id=#{id,jdbcType=VARCHAR}
</update>
如果是删除一条记录,接口里定义方法 int deleteByPrimaryKey(String id); 删除某id对应的实体,返回成功与否,在Mapping中应该这样写:
<!-- 删除某条记录 -->
<delete id="deleteByPrimaryKey" parameterType="java.lang.String">
DELETE FROM tadd
WHERE id = #{id,jdbcType=VARCHAR}
</delete>
更多Mapping里的如何动态构造SQL,可参考网址http://www.blogjava.net/stevenjohn/archive/2012/12/25/393451.html