本篇主要讲利用Mybatis的xml配置SQL方法实现增删改查
基本的增删改查
select
<select id="findUserById" resultType="com.dale.pojo.User" parameterType="int">
select * from h_user where id = #{id}
</select>
- 标签中的
id
:Dao接口里的方法名 -
resultType
:SQL语句执行的返回值类型(基本数据类型、实体类、map) -
parameterType
:SQL语句的参数类型
insert
<insert id="addUser" parameterType="com.dale.pojo.User">
insert into h_user (id, name, pwd) values (#{id}, #{name}, #{pwd})
</insert>
- 标签中没有resultType
- 对象中的属性可以直接取出来:
#{属性名}
- 需要用SqlSession的
commit()
方法提交事务
update
<update id="updateUser" parameterType="com.dale.pojo.User">
update h_user set name = #{name}, id = #{id}, pwd = #{pwd} where id = #{id}
</update>
- 需要用SqlSession的
commit()
方法提交事务
delete
<delete id="deleteUser" parameterType="int">
delete from h_user where id = #{id}
</delete>
- 需要用SqlSession的
commit()
方法提交事务
使用Map作为标签的参数
观察上述配置文件,如果使用实体类作为参数,我们需要保证#{属性名}
必须与实体类中的属性名一致。
使用Map作为参数可以更加自由。
接口中的方法:
public int addUserUsingMap(Map<String, Object> map);
Mapper.xml配置文件:
<!-- 使用map来作为参数,里面的键名可以任意 -->
<insert id="addUserUsingMap" parameterType="map">
insert into h_user (id, name, pwd) values (#{userId}, #{username}, #{password})
</insert>
测试代码:
@Test
public void testAddUsingMap() {
// 获取SqlSession对象
SqlSession ss = MybatisUtil.getSqlSession();
// 获取Dao对象,即Mapper
UserDao userDao = ss.getMapper(UserDao.class);
Map<String, Object> mp = new HashMap<String, Object>();
mp.put("userId", 6);
mp.put("username", "是否合适的空间");
mp.put("password", "password");
userDao.addUserUsingMap(mp);
// 提交事务
ss.commit();
// 关闭SqlSession
ss.close();
}
结果集映射 resultMap
继续观察上述配置文件,如果使用实体类作为返回类型resultType,那么我们需要保证实体类的属性名和数据库里的字段名保持一致。如果有的字段名不一致,那么返回的结果中,这个属性值将为null。
如果将上述User实体类的熟悉名name改为username:
public class User {
private int id;
private String username;
private String pwd;
}
此时数据库里对应的字段名依旧是name
引入结果集映射:
<!-- 通过namespace来绑定一个Dao接口 -->
<mapper namespace="com.dale.dao.UserDao">
<resultMap type="com.dale.pojo.User" id="userResultMap">
<result column="name" property="username"/>
</resultMap>
<select id="findUserById" resultMap="userResultMap" parameterType="int">
select * from h_user where id = #{id}
</select>
</mapper>
在<resultMap>
标签中,column
表示数据库里的字段,property
表示实体类里的属性
Top comments (0)