使用mybatis注解和xml映射执行javaWeb中增删改查等操作

Mapper接口

使用注解执行SQL语句操作和相应的Java抽象类(对于简单的增删改查使用注解)
java 复制代码
@Mapper
public interface EmpMapper {
    // 根据id删除员工信息
    @Delete
    ("delete from mybatis.emp where id=#{id}")
    public int EmpDelete(Integer id);


    // 查询所有员工信息
    @Select("select * from emp")
    public List<Emp> EmpSelect();

    //将自动增长的id封装到emp对象的id属性中
    @Options(useGeneratedKeys = true, keyProperty="id")
    //向emp表中插入一条数据
    @Insert("insert into emp(username, name, gender, image, job, entrydate, dept_id, create_time, update_time)" +
            "values (#{username}, #{name}, #{gender}, #{image}, #{job}, #{entrydate}, #{deptId}, #{createTime}, #{updateTime})")
    public void EmpInsert(Emp emp);

    //更新emp表中的数据
    @Update("update emp set username=#{username},name=#{name},gender=#{gender},image = #{image},"+
    "job=#{job},entrydate=#{entrydate},dept_id = #{deptId},update_time=#{updateTime} where id=#{id}")
    public void update(Emp emp);

    //方案一:为字段起别名,让MySQL中的字段和java类中的字段名一致,这样mybatis 就能获取MySQL中相对应的字段数据了
//    @Select("select id, username, password, name, gender, image, job, entrydate, dept_id as deptId, create_time as createTime, " +
//            "update_time as updateTime from emp where id = #{id}")
//    public Emp Search(Integer id);

//    // 方案二:在Results注解中将数据库表中的dept_id列映射到Java对象中的deptId属性
//    @Results({
//                    //MySQL中的字段名和Java类中对应的属性名
//            @Result(column = "dept_id",property = "deptId"),
//            @Result(column = "create_time",property = "createTime"),
//            @Result(column = "update_time",property = "updateTime")
//
//    })
//    @Select("select * from emp where id = #{id}")
//    public Emp Search(Integer id);

    //方案三:在配置文件中开启mybatis的驼峰命名自动映射开关mybatis.camel,无需动原代码自动映射
        // 根据id查询员工信息
        @Select("select * from emp where id = #{id}")
        public Emp Search(Integer id);

        @Select("select * from emp where name like concat('%',#{name},'%') and gender= #{gender} and entrydate between #{begin} and #{end} order by update_time desc")
        //条件查询
        public List<Emp> conditionSearch(String name , Short gender , LocalDate begin , LocalDate end);
}
使用xml配置映射语句(对于复杂的SQL语句,建议使用xml配置映射语句)

接收MySQL数据的Java类

java 复制代码
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Emp {
    private Integer id;
    private String username;
    private String password;
    private String name;
    private Short gender;
    private String image;
    private Short job;
    private LocalDate entrydate;     //LocalDate类型对应数据表中的date类型
    private Integer deptId;
    private LocalDateTime createTime;//LocalDateTime类型对应数据表中的datetime类型
    private LocalDateTime updateTime;
}

连接数据库和引入mybatis的配置文件

perl 复制代码
spring.application.name=mybatis-idus
#连接数据库
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis
spring.datasource.username=root
spring.datasource.password=root
#配置mybatis.log日志,指定输出到控制台
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
#开启mybatis的驼峰命名自动映射开关mybatis.camel
mybatis.configuration.map-underscore-to-camel-case=true

执行相关操作的测试类

java 复制代码
@SpringBootTest
class MybatisCdusApplicationTests {
    @Autowired
    private EmpMapper emp;
    @Test
    void contextLoads() {


//        //删除id为17的员工
//        int n = emp.EmpDelete(17);
//        System.out.println(n);
//        //创建一个新的员工对象
//        Emp emp2 = new Emp();
//        //设置员工对象的属性
//        emp2.setUsername("Tom3");
//        emp2.setName("汤姆3");
//        emp2.setGender((short)1);
//        emp2.setImage("https://img-home.csdnimg.cn/images/20240218021830.png");
//        emp2.setJob((short)2);
//        emp2.setDeptId(1);
//        emp2.setEntrydate(LocalDate.now());
//        emp2.setCreateTime(LocalDateTime.now());
//        emp2.setUpdateTime(LocalDateTime.now());
//        //插入新的员工对象
//        emp.EmpInsert(emp2);
//        //使用了 @Options(useGeneratedKeys = true, keyProperty="id") 就可以获取主键值了
//        System.out.println(emp2.getId());
//
//        System.out.println(n);
//
//        //创建一个新的员工对象
//        Emp emp3 = new Emp();
//        //设置员工对象的属性
//        emp3.setUsername("Tom4");
//        emp3.setName("汤姆4");
//        emp3.setGender((short)1);
//        emp3.setImage("https://img-home.csdnimg.cn/images/20240218021830.png");
//        emp3.setJob((short)2);
//        emp3.setDeptId(1);
//        emp3.setEntrydate(LocalDate.of(2001,12,12));
//        emp3.setCreateTime(LocalDateTime.now());
//        emp3.setUpdateTime(LocalDateTime.now());
//        emp3.setId(21);
//        //更新员工对象
//        emp.update(emp3);
//
//        //根据id查询员工对象
//        Emp employee = emp.Search(21);
//        System.out.println(employee.toString());

        // 根据姓名、性别、入职日期和当前日期进行条件查询
        emp.conditionSearch("汤", (short) 1, LocalDate.of(2010,1,1),LocalDate.now());

    }

}

MySQL相关数据

sql 复制代码
create table emp
(
    id          int unsigned auto_increment comment 'ID'
        primary key,
    username    varchar(20)                  not null comment '用户名',
    password    varchar(32) default '123456' null comment '密码',
    name        varchar(10)                  not null comment '姓名',
    gender      tinyint unsigned             not null comment '性别, 说明: 1 男, 2 女',
    image       varchar(300)                 null comment '图像',
    job         tinyint unsigned             null comment '职位, 说明: 1 班主任,2 讲师, 3 学工主管, 4 教研主管, 5 咨询师',
    entrydate   date                         null comment '入职时间',
    dept_id     int unsigned                 null comment '部门ID',
    create_time datetime                     not null comment '创建时间',
    update_time datetime                     not null comment '修改时间',
    constraint username
        unique (username)
)
    comment '员工表';
相关推荐
Devin~Y21 小时前
从内容社区到AI智能客服:Spring Boot + Spring Cloud + Spring AI 全栈实战面试拆解
java·spring boot·redis·elasticsearch·spring cloud·kafka·mybatis
丶意冷1 天前
OceanBase 双模式识别与 MyBatis-Plus 分页方言自动切换实战
mybatis·oceanbase
lv__pf2 天前
spring之整合mybatis【TL spring 12】
mysql·spring·mybatis
ChaHae-In3 天前
MyBatis动态SQL与MyBatis-Plus高效开发指南
数据库·oracle·mybatis
csdn2015_3 天前
springboot +mybatis 查询myql开启程序级别缓存
spring boot·缓存·mybatis
C++、Java和Python的菜鸟4 天前
第1章 项目前置课-Mybatis-Plus
mybatis
jaysee-sjc4 天前
【JavaWeb】Tlias智能学习辅助系统|后端Web实战(登录认证)
java·开发语言·前端·学习·mybatis
步行cgn4 天前
MyBatis 动态 SQL 完全指南
sql·tomcat·mybatis
步行cgn5 天前
错误:Invalid bound statement (not found) 详解与解决方案
mybatis
sugar__salt5 天前
MyBatis-Plus 从入门到实战:高效简化数据库开发的完整指南
数据库·spring boot·mybatis·数据库开发