面向接口编程

  • 根本原因:【解耦】,【可拓展】,【更高规范性】
  • 接口类型:
    • abstract class
    • interface

使用注解开发

  • 简单语句可用注解开发(直接查询,列名与属性名相同)
本质:反射机制实现
底层:动态代理
    • 注解直接在接口上实现
@Select("SELECT * FROM user")
List<User> getUsers();
    • 也与要配置核心配置文件
<!--绑定接口-->
<mappers>
<mapper class="cn.iris.dao.UserMapper"/>
</mappers>
    • 测试
    @Test
public void getUsersTest() {
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> users = mapper.getUsers(); for ( User user : users) {
System.out.println(user);
}
sqlSession.close();
}
  • 复杂情况均用xml文件配置

注解实现CRUD

在工具类创建时实现自动提交事务

// 有了 SqlSessionFactory,我们可以从中获得 SqlSession 的实例
public static SqlSession getSqlSession() {
return sqlSessionFactory.openSession(true);
}
// 涉及源码
public SqlSession openSession(boolean autoCommit) {
return this.openSessionFromDataSource(this.configuration.getDefaultExecutorType(), (TransactionIsolationLevel)null, autoCommit);
}

查询

@Select("SELECT * FROM user WHERE id = #{id}")
User getUserById(@Param("id") int id);

添加

@Insert("INSERT INTO user(id,name,pwd) VALUES (#{id},#{name},#{password})")
int addUser(User user);

修改

@Update("UPDATE user SET name = #{name} WHERE id = #{id}")
int updateUser(@Param("id") int id, @Param("name") String name);

删除

@Delete("DELETE FROM user WHERE id = #{id}")
int deleteUserById(@Param("id") int id);
方法存在多参数时,每个参数前都需要加@Param("列名")

@param()注解

  • 基本类型参数&String类型,需要加
  • 引用类型(如:User)不用加
  • 只有单参,可忽略但不建议
  • SQL中引用的则是该@param设定的属性名

#{} 与 ${}区别

--#{}:预编译符--没有sql注入风险

--${}:常规编译(字符串拼接)--存在sql注入风险

最新文章

  1. 由js apply与call方法想到的js数据类型(原始类型和引用类型)
  2. 最小安装模式下Centos7.*网卡启动配置
  3. canvas中的碰撞检测笔记
  4. CentOS 6.x 系统安装选项说明
  5. yum mysql on centos 7
  6. NYOJ 128 前缀式计算
  7. (四)ubuntu学习前传—uboot中对Flash和DDR的管理
  8. show engine innodb status\G
  9. python中的对象拷贝
  10. 简单的背包问题(入门)HDU2602 HDU2546 HDU1864
  11. WPS2012交叉引用提示word比wps这种强烈的更新参考
  12. Node填坑教程——HelloWorld
  13. git使用详解
  14. CentOS_7下安装MySQL
  15. 安装SSD
  16. 深度学习中的batch_size,iterations,epochs等概念的理解
  17. mysql常用函数总结
  18. PHP内置函数实现简单洗牌
  19. [html]webpack网页开发打包工具
  20. dubbo监控工具

热门文章

  1. Redis big key处理
  2. release模式下打断点调试 配置选项
  3. 1、centos7修改网卡名称为传统的eth0
  4. 21、oracle打开和关闭归档日志的方法
  5. 无向图(邻接表实现)DFS_AND_BFS
  6. 用java实现斐波那契数列
  7. linux修改 ls 命令的时间显示格式
  8. 第一章 - Java与线程
  9. Acunetix在SDLC中的安全性测试
  10. 使用Hugo框架搭建博客的过程 - 页面模板