MyBatis学习笔记二:MyBatis增删改查
作者:互联网
映射文件的增删改查(mapper.xml)
1.建立mapper映射文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--要映射的接口位置接口的位置-->
<mapper namespace="dao.DeptMapper">
<!--接口返回类型定义区-->
<!--接口方法对应的sql语句写入-->
2. 基本增删改查语句
MyBatis获取参数值的两种方式:${}和#{}
${}
的本质就是字符串拼接(类似宏定义,不会有多余的字符修饰),#{}
的本质就是占位符赋值(会根据类型变化,字符串类型会在填充时加上单引号)
在获取的参数值使用场景中:
如果是字符类型可以使用#{}
和'${}'
两种方式
如果是数值型可以使用#{}
和${}
两种方式
<!--接口中的方法 @Param("did"):占位符键值,占位符根据键将对应的形参值传进sql语句-->
- 增加数据
<!--
public boolean save(User user);
public boolean save(Map<String,Object> map); //将每条属性写成键值对的形式
public boolean save(@Param("username") String username, @Param("password") String password, @Param("age") int age, @Param("sex") sex, @Param("email") String email);
-->
<insert id="save">
insert into t_user values(null,#{username},#{password},#{age},#{sex},#{email})
</insert>
- 删除数据
<!--
public boolean deleteById(@Param("id") Integer id);
-->
<delete id="deleteById">
delete from t_user where id = #{id}
</delete>
- 修改数据
<!--
public boolean update(User user);
-->
<update id="update">
update t_user set username = #{username},password = #{password},age = #{age},sex = #{sex},email = #{email} where id = #{id}
</update>
- 查询单个数据
<!-- resultType是返回值类型
1.自定义的类需要写进返回值类型,简写需要在核心配置文件的配置文件里面导入,否则要写全类名
2.非自定义的基本类型可以不写(int double Integer等)
3.其他 Map--map,List--list
-->
<!--public Dept getDeptById(@Param("did") Integer did)-->
<select id="getDeptById" resultType="Dept">
select * from t_dept where did = #{did}
</select>
<!--返回类型为list,map要写-->
<!--Map<String, Object> getUserToMap(@Param("id") int id);-->
<select id="getUserToMap" resultType="map">
select * from t_user where id = #{id}
</select>
- 查询多个数据
<!--
接口定义方式一:
List<Map<String, Object>> getAllUserToMap();
接口定义方式二:
@MapKey("id") //需要指定键值类型
Map<String, Object> getAllUserToMap();
-->
<select id="getAllUserToMap" resultType="map">
select * from t_user
</select>
3.特殊SQL执行
- 模糊查询
<!--List<User> testMohu(@Param("mohu") String mohu);-->
<select id="testMohu" resultType="User">
<!--select * from t_user where username like '%${mohu}%'-->
<!--select * from t_user where username like concat('%',#{mohu},'%')-->
select * from t_user where username like "%"#{mohu}"%"
</select>
- 批量删除
<!--int deleteMore(@Param("ids") String ids);-->
<delete id="deleteMore">
delete from t_user where id in (${ids})
</delete>
- 动态设置表名
<!--List<User> getAllUser(@Param("tableName") String tableName);-->
<!--表名不能用单引号引用-->
<select id="getAllUser" resultType="User">
select * from ${tableName}
</select>
- 获取自增的主键
<!--自增的主键一般在实体类中不进行赋值,当写入数据库,自然就会生成,如何在不进行二次查询的情况下获取主键-->
<!--int insertUser(User user);-->
<!--
useGeneratedKeys:设置使用自增的主键
keyProperty:因为增删改有统一的返回值是受影响的行数,不能直接写在返回值上
,因此只能将获取的自增的主键放在传输的参数user对象的某个属性中
-->
<insert id="insertUser" useGeneratedKeys="true" keyProperty="id">
insert into t_user values(null,#{username},#{password},#{age},#{sex})
</insert>
4. SQL查询返回值类型详解
标签:username,改查,Param,增删,user,MyBatis,password,where,id 来源: https://www.cnblogs.com/sleepyheadLK/p/16504150.html