MyBatis——使用注解开发

日子过得很慢,生活过得很烂,除了想你,其他我什么都做不好。

使用注解开发

1、面向接口编程

面向接口编程的根本原因:解耦,可扩展,提高复用,分层开发中、上层不用管具体的实现,大家都遵守共同的标准,使得开发变得容易,规范性好

2、使用注解开发

  • 注解在接口上实现

    @Select(value = "select * from user")
    List<User> getUsers();
  • 需要在核心配置文件中绑定接口
    <!--绑定接口-->
    <mappers>
        <mapper class="rui.dao.UserMapper"/>
    </mappers>
  • 测试
    public class UserMapperTest {
        @Test
        public void test(){
            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();
        }
    }

    本质:反射机制实现

    底层:动态代理

3、CRUD

我们可以在工具类创建的时候实现自动提交事务

public static SqlSession getSqlSession(){
    return sqlSessionFactory.openSession(true);
}

编写接口,增加注解

public interface UserMapper {
    @Select(value = "select * from user")
    List<User> getUsers();

    //方法存在多个参数,所有的参数前面必须加上@Param注解
    @Select("select * from user where id = #{id} or name = #{name}")
    User getUserByID(@Param("id")int id,@Param("name")String name);

    @Insert("insert into user(id,name,pwd) values (#{id},#{name},#{password})")
    int addUser(User user);

    @Update("update user set name = #{name},pwd = #{password} where id = #{id}")
    int updateUser(User user);

    @Delete("delete from user where id = #{uid}")
    int deleteUser(@Param("uid") int id);
}

测试类

【注意:我们必须要将接口注册绑定到我们的核心配置文件中】

关于@Param()注解

  • 基本类型的参数或者String类型,需要加上
  • 引用类型不需要加
  • 如果只有一个基本类型的化,可以忽略,但是建议都加上
  • 我们在SQL中引用的就是我们这里的@Param()中设定的属性名

#{} ${}区别

  • {}是预编译处理,${}是字符串替换

  • mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;mybatis在处理${}时,就是把${}替换成变量的值
  • 使用#{}可以有效的防止SQL注入,提高系统安全性

原文地址:https://www.cnblogs.com/huangdajie/p/12443277.html

时间: 2024-08-29 17:02:14

MyBatis——使用注解开发的相关文章

mybatis的注解开发之三种动态sql

脚本sql XML配置方式的动态SQL我就不讲了,有兴趣可以自己了解,下面是用<script>的方式把它照搬过来,用注解来实现.适用于xml配置转换到注解配置 @Select("<script>select * from user <if test=\"id !=null \">where id = #{id} </if></script>") public List<User> findUse

mybatis的缓存和注解开发(4)

第四天:mybatis的缓存和注解开发 mybatis中的加载时机(查询的时机) mybatis中的一级缓存和二级缓存 mybatis的注解开发  单表CRUD  多表查询 一.今日内容概要 1.Mybatis中的延迟加载 问题:在一对多中,当我们有一个用户,它有100个账户.       在查询用户的时候,要不要把关联的账户查出来?       在查询账户的时候,要不要把关联的用户查出来?         在查询用户时,用户下的账户信息应该是,什么时候使用,什么时候查询的.       在查询

Spring+SpringMVC+MyBatis深入学习及搭建(十六)——SpringMVC注解开发(高级篇)

转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/7085268.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十五)——SpringMVC注解开发(基础篇) 本文主要内容: (1)SpringMVC校验 (2)数据回显 (3)异常处理器 (4)图片上传 (5)Json数据交互 (6)支持RESTful 1.SpringMVC校验 1.1校验理解 项目中,通常使用较多的是前端的校验,比如页面中js校验.对于安全要求较高的

MyBatis框架之注解开发

MyBatis注解开发 @Insert注解注解属性value:写入SQL语句 @Options注解实现添加新数据的主键封装注解属性useGeneratedKeys:使用生成的主键,配置为truekeyProperty:主键封装的pojo对象属性 @SelectKey注解实现添加新数据的主键封装注解属性statement:要执行的SQL语句before:在添加SQL语句之前还是之后进行,配置为false keyProperty:主键封装的pojo对象属性 注解实现添加数据 UserMapper接口

阶段3 1.Mybatis_12.Mybatis注解开发_1 mybatis注解开发的环境搭建

注解开发是省了IUserDao.xml这个映射文件里面的配置 环境搭建 首先是packaging标签.输入jar 需要准备一个实体类.生成getter和setter还有toString方法 创建dao接口.先写一个查询所有的接口 按照原来的要求需要在resources下创建Directory也就是文件夹 创建了com.itheima.dao这三个文件夹.为了演示用. 配置主配置文件SqlMapConfig.xmls 复制给的资料里面的config的约束 先输入configuration标签.然互

MyBatis集成Spring开发 讲解

MyBatis集成Spring开发 讲解 简介:Spring集成Mybatis开发简述有两种方式,第一种是在applicationContext.xml中配置接口扫描类(同时也扫描了sql.xml配置文件)或者注入接口类(MapperScannerConfigurer.MapperFactoryBean这两个在test中有讲解如何配置),第二种是原生的Mybatis,不用接口开发,而在applicationContext.xml中当配置sqlSessionFactory时候,配置如conf.xm

spring注解开发中常用注解以及简单配置

一.spring注解开发中常用注解以及简单配置 1.为什么要用注解开发:spring的核心是Ioc容器和Aop,对于传统的Ioc编程来说我们需要在spring的配置文件中邪大量的bean来向spring容器中注入bean对象, 然而,通过注解编程可以缩短我们开发的时间,简化程序员的代码编写. 2.如何开启注解开发:最常用的方法是使用<mvc:annotation-driven/>来开启注解编程(用一个标签配置了spring注解编程的映射器和适配器,同时配置了许多的参数) 3.如何将有注解的be

Mybatis入门---dao开发和mapper代理开发

在说mabatis之前,先说说单独使用jdbc编程的缺陷. jdbc编程的大概流程大家都很清楚,基本分为以下几步: 加载数据驱动 创建并获取数据库连接 创建jdbc statement对象 设置sql语句,并设置sql语句中的参数 通过statement执行sql并获取结果 对执行的结果进行解析处理 释放资源 1 public static void main(String[] args) { 2 Connection connection = null; 3 PreparedStatement

SpringMVC-Mybatis整合和注解开发

SpringMVC-Mybatis整合和注解开发SpringMVC-Mybatis整合整合的思路在mybatis和spring整合的基础上 添加springmvc.spring要管理springmvc编写的Handler(controller).mybatis的SqlSessionFactory.mapper.别名.映射等步骤:整合dao(mapper)层,spring和mybatis整合整合service,spring管理service接口,service中可以调用spring容器中dao(m