欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > Springboot Mybatis操作数据库

Springboot Mybatis操作数据库

2024/11/5 21:43:28 来源:https://blog.csdn.net/Aishangyuwen/article/details/142471527  浏览:    关键词:Springboot Mybatis操作数据库

        Mybatis操作数据库完成增删改查

        Mapper接口

package com.wzb.MybatisExercise20240923;import com.wzb.Pojo20240923.Emp;
import org.apache.ibatis.annotations.*;@Mapper
public interface EmpMapper {// 通过Mybatis对数据库内容进行更新@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 updateEmp(Emp emp);// 根据不同的字段对数据库进行查询// 注!@Select必须要有返回值,通常是返回对应属性封装的实例类
//    @Select("select id, username, password, name, gender, image, job, entrydate, dept_id, create_time, update_time" +
//            " from emp where id=#{id}")
//    public Emp selectEmp(Integer id);// 发现查询的结果:deptId、createTime、updateTime是没有值的,其全部都是null// 原因:因为实体类的属性和数据库表查询返回的字段名不一致,无法自动封装(若一致才可以自动封装)// 解决方案:// 1.起别名// 在SQL语句中,对不同的列名起别名,别名和实体类属性名一样
//    @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 selectEmp(Integer id);// 2.结果映射// 通过@Results和@Result进行手动结果映射
//    @Results({@Result(column = "dept_id", property = "deptId"),
//              @Result(column = "create_time", property = "createTime"),
//              @Result(column = "update_time", property = "updateTime")
//    })
//    @Select("select id, username, password, name, gender, image, job, entrydate, dept_id, create_time, update_time " +
//            "from emp where id = #{id}")
//    public Emp selectEmp(Integer id);// 3.开启驼峰命名// 如果字段名与属性名符合驼峰命名规则,mybatis会自动通过驼峰命名规则映射// 但是,非常需要注意的一点:要使用驼峰命名前提是:实体类的属性与数据库表中的字段名严格遵守驼峰命名。// 在application.properties中添加:mybatis.configuration.map-underscore-to-camel-case=true@Select("select id, username, password, name, gender, image, job, entrydate, dept_id, create_time, update_time" +" from emp where id=#{id}")public Emp selectEmp(Integer id);}

        测试类

package com.wzb;import com.wzb.ConditionSelectExercise20240923.ConditionEmpMapper;
import com.wzb.MybatisExercise20240923.EmpMapper;
import com.wzb.Pojo20240923.Emp;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;@SpringBootTest
class SpringbootExercise20240923ApplicationTests {// 通过@Mapper和@Autowired实现从IOC容器中自动注入需要的类@Autowiredprivate EmpMapper empMapper;@Autowiredprivate ConditionEmpMapper ce;// 更新数据库的函数@Testpublic void updateEmp() {Emp emp = new Emp();// 注:想要更改哪条数据,就直接将新的对象的id值设置成想要更改的id值emp.setId(19);emp.setUsername("songdaxia");emp.setPassword(null);emp.setName("老宋");emp.setImage("2.jpg");emp.setGender((short)1);emp.setJob((short)2);emp.setEntrydate(LocalDate.of(2012,1,1));emp.setCreateTime(null);emp.setUpdateTime(LocalDateTime.now());emp.setDeptId(2);empMapper.updateEmp(emp);}// 按照id在数据库查找的函数
//    @Test
//    public void selectEmp() {
//        Emp emp = empMapper.selectEmp(19);
//        System.out.println(emp);
//    }// 条件查询@Test// LocalDate.of()方法是会返回一个对应的LocalDate对象的public void selectEmp() {List<Emp> empList = ce.selectEmp("张", (short)1, LocalDate.of(2010, 1, 1),LocalDate.of(2020, 1, 1));System.out.println(empList);}
}

        Pojo

package com.wzb.Pojo20240923;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.time.LocalDate;
import java.time.LocalDateTime;@Data
@AllArgsConstructor
@NoArgsConstructor
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;
}

 

 

         

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com