单表操作
修改
- 书写PersonDAO接口,声明修改的方法
public interfafce PersonDAO{ /** 参数: id: 条件 其他属性: 修改的新的值 */ public void update(Person person); }
- 在Mapper通过标签实现方法
<update id="update" parameterType="Person的全类名"> <!--sql,要绑定的参数--> update t_person set name = #{name},sex =#{sex},age=#{age},mobile=#{mobile},address=#{address} where id = #{id} </update>
- 注册mapper文件。[一个接口,对应一个mapper文件,注册一次]
删除
- 定义dao接口的方法
- 书写mapper文件标签
- 注册mapper文件。
限定参数绑定的名字
- 定义接口方法
public interface PersonDAO{ public void delete(@Param("指定参数绑定使用的名字")Integer id); }
- Mapper文件
<delete> delete from t_person where id = #{指定参数绑定使用的名字} </delete>
查询
查询单个
- 书写DAO接口方法
public interface PersonDAO{ Person selectById(Integer id); }
- mapper文件实现该方法(sql 参数 对查询结果映射实体对象)
核心: sql 参数
映射核心思想:
如果查询结果的列名和要封装的实体的属性名一样,将查询结果自动封装实体对象。
<select id="selectById" parameterType="java.lang.Integer" resultType="查询结果的一行数据映射的实体对象类型"> select id,name,sex,age,mobile,address from t_person where id = #{id} </select>
- 注册mapper文件
ResultType的作用
作用: 映射查询结果的列封装成实体的属性
要求: 查询结果的列名必须和实体的属性名一致
表列名和实体属性名不一致
通过sql 的as关键字,其别名方式,使查询结果的列名和实体的属性名一致。
查询多个
只需要明确单行数据映射的实体类型,
MyBatis会自动讲每个数据封装的每个实体放入list集合中。
- 书写DAO接口方法
public interface PersonDAO { List<Person> selectAll(); }
- 书写mapper文件中的标签
<select id="selectAll" resultType="rs的一行数据映射实体类型"> select id,name,sex,age,mobile,address from t_person </select>
- 注册mapper文件
多个参数(基本,包装,String)
方案一:
@Param给接口方法的参数起别名public interface UserDAO { User selectByUsernameAndPassword(@Param("username")String username,@Param("password")String password); } select id,username,password from t_user where username = #{username} and password = #{password}
方案二:
绑定参数通过#{参数的序号从0开始}
MyBatis的Mapper文件的sql书写 >或者 <
问题: 会发生转义
解决: 替换成转义字符






浙公网安备 33010602011771号