查
在MyBatis中,写查的sql使用的是select标签,select标签的属性用来详细配置每一条sql,如:
id:唯一标识符,与接口中的方法一一对应;
parameterType:传入sql语句的参数类型,当参数是基本类型并且只有一个时该属性可以不写;
resultType:sql语句返回值的类型(完整的类名或者别名);
<select id="listUsers" resultType="com.wjh.po.User">select *from user</select><select id="getUserById" resultType="com.wjh.po.User" parameterType="int">select *from userwhere id = #{id}</select>
增、删、改
<insert id="addUser" parameterType="com.wjh.po.User">insert into user(id, name, pwd)values (#{id}, #{name }, #{pwd})</insert><update id="updateUserById" parameterType="com.wjh.po.User">update userset name=#{name},pwd=#{pwd}where id = #{id}</update><delete id="deleteUserById" parameterType="int">deletefrom userwhere id = #{id}</delete>
增删改的标签属性和查的差不多,但需要注意的是增删改都需要提交事务才能改变数据库中的数据,如:
@Test
public void deleteUserTest() {
SqlSession sqlSession = MyBatisUtils.getSqlSession();
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
userMapper.deleteUserById(5);
sqlSession.commit(); //提交事务
sqlSession.close();
}
使用map传值
在接口方法中的参数只使用map
User selectUserById2(Map<String,Object> map);
编写sql语句的时候,标签的parameterType使用map,如:
<select id="selectUserById2" parameterType="map" resultType="com.kuang.pojo.User">
select * from user where name = #{username} and pwd = #{password}
</select>
在使用方法的时候,Map的 key 为 sql中取的值即可,且没有顺序要求,如:
Map<String, Object> map = new HashMap<String, Object>();
map.put("username","小明");
map.put("password","123456");
User user = mapper.selectUserById2(map);
map的使用场景:如果参数过多,可以考虑直接使用Map实现,如果参数比较少,直接传递参数即可
