使用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 '员工表';
相关推荐
鹿屿二向箔2 小时前
基于SSM(Spring + Spring MVC + MyBatis)框架的汽车租赁共享平台系统
spring·mvc·mybatis
沐雪架构师5 小时前
mybatis连接PGSQL中对于json和jsonb的处理
json·mybatis
鹿屿二向箔7 小时前
基于SSM(Spring + Spring MVC + MyBatis)框架的咖啡馆管理系统
spring·mvc·mybatis
aloha_78916 小时前
从零记录搭建一个干净的mybatis环境
java·笔记·spring·spring cloud·maven·mybatis·springboot
毕业设计制作和分享17 小时前
ssm《数据库系统原理》课程平台的设计与实现+vue
前端·数据库·vue.js·oracle·mybatis
paopaokaka_luck20 小时前
基于Spring Boot+Vue的助农销售平台(协同过滤算法、限流算法、支付宝沙盒支付、实时聊天、图形化分析)
java·spring boot·小程序·毕业设计·mybatis·1024程序员节
cooldream200921 小时前
Spring Boot中集成MyBatis操作数据库详细教程
java·数据库·spring boot·mybatis
不像程序员的程序媛1 天前
mybatisgenerator生成mapper时报错
maven·mybatis
小布布的不1 天前
MyBatis 返回 Map 或 List<Map>时,时间类型数据,默认为LocalDateTime,响应给前端默认含有‘T‘字符
前端·mybatis·springboot
背水1 天前
Mybatis基于注解的关系查询
mybatis