目录
回顾MyBatis如何操作数据库
我们先来回顾一下MyBatis操作数据库的一条线。
1.先在dao层写方法名
public interface UserDao {
List<User> getUserList();
}
2.在具体的xml文件中指定方法id和返回值类型等,写入sql语句
<!--namespace=绑定一个对应的Dao/Mapper接口-->
<mapper namespace="com.lt.dao.UserDao">
<!--select查询语句-->
<select id="getUserList" resultType="com.lt.pojo.User">
select * from mybatis.user
</select>
</mapper>
3.测试类中执行查询,有参则传参
//第一步:获得SqlSession对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
//方式一:getMapper
UserDao userDao = sqlSession.getMapper(UserDao.class);
List<User> userList = userDao.getUserList();
for (User user : userList) {
System.out.println(user);
}
namespace
namespace的名字要和Dao接口的路径名一致
Mapper.xml属性值解析
-
id : 就是对应的是dao接口中的方法名;
-
resultType:Sql语句执行的返回值!
-
parameterType : 参数类型!
增删改操作
<insert id="addUser" parameterType="com.kuang.pojo.User">
insert into mybatis.user (id, name, pwd) values (#{id},#{name},#{pwd});
</insert>
<update id="updateUser" parameterType="com.kuang.pojo.User">
update mybatis.user set name=#{name},pwd=#{pwd} where id = #{id} ;
</update>
<delete id="deleteUser" parameterType="int">
delete from mybatis.user where id = #{id};
</delete>
注意,增删改操作均需要提交事务
你也可以在MybatisUtils工具类创建文件时设置自动提交事务
万能的Map
前面我们已经写了几条线,我们发现有两个问题
一是在sql中,id必须等于{id},name必须等于{name},
二是如果用自定义的实体类比如User作为参数对象传递,我们需要写出实体类的的每一个字段,但如果我们使用Map,想传什么参数就可以传什么参数
举例:使用map修改用户名
打开数据库查看修改结果
使用map可以自定义传递的参数个数,并且传递的字段名以实际调用时为主,可以和数据库表字段名不一致。
模糊查询
使用模糊查询时,不要在sql语句中使用百分号,这样写死sql的格式很不安全,会遭到SQL注入的攻击。