mybatis <!-- useGeneratedKeys="true"把新增加的主键赋值到自己定义的keyProperty(id)中 -->...

本文介绍如何使用myBatis配置属性useGeneratedKeys=true实现新增记录后将生成的主键值自动填充到指定属性中,这对于需要保存自动生成ID的情况非常有用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 <!-- useGeneratedKeys="true"把新增加的主键赋值到自己定义的keyProperty(id)中 -->
实验四 MyBatis编程 一、实验内容 1、使用MyBatis进行简单的增删查改。 1.建一个空模板的maven项目,并引入MyBatis的相关依赖。 1.1 建数据库mybatis。 1.2、建数据表ms_member,建表语句如下: DROP TABLE IF EXISTS ms_member; CREATE TABLE ms_member ( member_id int(11) NOT NULL AUTO_INCREMENT, uname varchar(50) NOT NULL, password varchar(50) NOT NULL, email varchar(50) NOT NULL, sex smallint(6) DEFAULT NULL, mobile varchar(50) DEFAULT NULL, PRIMARY KEY (`member_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; 1.3、编写配置文件dba.properties,代码如下: mysql.driver=com.mysql.cj.jdbc.Driver #mysql.driver=com.mysql.jdbc.Driver mysql.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=false mysql.username=root mysql.password=root 1.4、创建包com.iteima,并创建一个子包pojo,编写与ms_member对应的实体类Member,Member的代码如下: public class Member { private Integer member_id;//编号 private String uname;//姓名 private String password;//密码 private String email;//邮箱 private Integer sex;//性别,男:0,女:1 private String mobile;//手机号 //getter和setter方法自行补充 //toString方法 public String toString() { return "Member [member_id=" + member_id + ", uname=" + uname + ", password=" + password + ", email=" + email + ", sex=" + sex + ", mobile=" + mobile + "]"; } } 1.5、在com.itheima包下创建子包mapper,创建与Member对应的MemberDaoMapper接口,写上数据库操作方法,代码如下: public interface MemberDaoMapper { public Integer insert(Member member);//增员工信息 //根据member_id查询人员信息 public Member getMemberById(Integer member_id); //根据员工id查找员工信息 public List<Member> findAll();//查询所有员工信息 public Integer updateById(Member member); //更员工信息 public Integer deleteById(Integer member_id);//删除员工信息 1.6、在resources文件夹里,建文件夹com/itheima/mapper,在里面建映射文件MemberDaoMapper.xml,撰写MemberDaoMapper接口里方法对应的sql语句,MemberDaoMapper.xml代码如下: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.itheima.mapper.MemberDaoMapper"> <!-- insert元素--> <insert id="insert" parameterType="com.itheima.pojo.Member"> <!-- 在此写insert的sql语句--> </insert> <select id="getMemberById" resultType="com.itheima.pojo.Member"> <!-- 在此写select的sql语句--> </select> <select id="findAll" resultType="com.itheima.pojo.Member"> <!-- 在此写select的sql语句--> </select> <!-- delete元素 --> <delete id="deleteById" parameterType="Integer"> <!-- 在此写delete的sql语句--> </delete> <!-- update元素,在此元素内写更语句 --> <update id="updateById"> <!-- 在此写update的sql语句,修改的是姓名--> </update> </mapper> 1.7、在resources文件夹里编写MyBatis核心配置文件MyBatis-config.xml,注意两点:settings标签内,需要设置日志开启。还有需要在Mapper元素内加入映射文件MemberDaoMapper文件的位置。 1.8、在com.itheima包下创建子包utils,在utils包编写一个工具类MyBatisUtils。 1.9、在MyBatisUtils里撰写一个静态方法getSession,用于创建SqlSession对象。getSession方法代码如下: public static SqlSession getSession(){ SqlSessionFactory sqlSessionFactory = null; try { // 使用MyBatis提供的Resources类加载MyBatis的配置文件 Reader reader = Resources.getResourceAsReader("Mybatis-config.xml"); // 构建SqlSessionFactory工厂 sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); return sqlSessionFactory.openSession(); } catch (Exception e) { e.printStackTrace(); } return null; } } 1.10、编写对应的测试方法。测试方法的代码如下: @Test public void testInsert(){ Member member=new Member(); member.setMember_id(null);//主键自增,直接赋值为null即可 member.setUname("李四"); member.setPassword("123456"); member.setEmail("ls@qq.com"); member.setSex(0); member.setMobile("13687654321"); //获取SqlSession SqlSession session= MyBatisUtils.getSession(); MemberDaoMapper memberDaoMapper=session.getMapper(MemberDaoMapper.class); memberDaoMapper.insert(member); //增删改需要提交事务 session.commit(); //用过后需将session关闭 session.close(); } @Test public void testGetMemberAll(){ SqlSession session= MyBatisUtils.getSession(); MemberDaoMapper memberDaoMapper=session.getMapper(MemberDaoMapper.class); List<Member> members=memberDaoMapper.findAll(); for(Member member:members){ System.out.println(member); } session.close(); } @Test public void testGetMemberById(){ SqlSession session= MyBatisUtils.getSession(); MemberDaoMapper memberDaoMapper=session.getMapper(MemberDaoMapper.class); Member member=memberDaoMapper.getMemberById(1); System.out.println(member); session.close(); } @Test public void testUpdateById(){ SqlSession session=MyBatisUtils.getSession(); MemberDaoMapper memberDaoMapper=session.getMapper(MemberDaoMapper.class); Member member=new Member(); member.setMember_id(1); //修改名字 member.setUname("梅西"); memberDaoMapper.updateById(member); session.commit(); session.close(); } @Test public void testDelete(){ SqlSession session=MyBatisUtils.getSession(); MemberDaoMapper memberDaoMapper=session.getMapper(MemberDaoMapper.class); //将刚刚增的记录从数据库中删除 memberDaoMapper.deleteById(1); session.commit(); session.close(); }补齐测试的代码
05-10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值