CRUD增删改查
select
<select id="getUserList" resultType="com.lms.pojo.User">
select * from mysql.user
</select>
选择、查询语句:
键值对含义:
id:对应方法名
resultType:返回值类型
parameterType:参数类型
编写:
①编写接口方法
User getUserById(int id);
②编写mapper内的sql语句
注:若方法参数为类,由#{}传入的值可以直接对应类成员名称
<select id="getUserById" resultType="com.lms.pojo.User" parameterType="int">
select * from mysql.user where id = #{id};
</select>
③测试
@Test
public void getById() {
//获得SqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
//执行SQL
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.getUserById(1);
System.out.println(user);
//关闭SqlSession
sqlSession.close();
}
insert
<insert id="addUser" parameterType="com.lms.pojo.User">
insert into mysql.user (id, name, pwd) values (#{id},#{name},#{pwd});
</insert>
update
<update id="updateUser" parameterType="com.lms.pojo.User">
update mysql.user set name=#{name},pwd=#{pwd} where id = #{id};
</update>
delete
<delete id="deleteUser" parameterType="int">
delete from mysql.user where id=#{id};
</delete>
注意:增删改需要进行事务提交才能真正修改数据库。
//提交事务
sqlSession.commit();
Map
当实体类、数据库表的字段或参数过多,考虑使用Map
使用:
①接口方法
int addUserByMap(Map<String, Object> map);
②Mapper:
<insert id="addUserByMap" parameterType="map">
insert into mysql.user (id, name, pwd) values (#{userId},#{userName},#{password});
</insert>
③测试:
@Test
public void InsertUserByMap() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("userId", 3);
map.put("password", 12345);
map.put("userName", "san");
mapper.addUserByMap(map);
sqlSession.commit();
sqlSession.close();
}
Map传递参数:名称和Map的键对应取出即可。
对象传递参数:需要和类成员名称对应。
只有一个基本类型参数:可以直接用任何名称都可取。
模糊查询
①java代码执行时,传递通配符% %
②在sql拼接中使用通配符
需要注意注入问题