怎么在MyBatis中实现增删改查

  介绍

怎么在MyBatis中实现增删改查?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

<>强优化测试方法

在测试方法中,读取配置文件,生产SqlSession,释放资源等等,在每一测试方法的时候,都是重复的,所以我们完全可以提出出这一部分,防止大量的重复代码

@Before   public 才能;void  init (), throws 异常{   ,,,//读取配置文件   ,,,inputStream =, Resources.getResourceAsStream (“SqlMapConfig.xml");   ,,,//创建SqlSessionFactory工厂   ,,,SqlSessionFactory  factory =, new  SqlSessionFactoryBuilder () .build (inputStream);      ,,,//使用工厂生产SqlSession对象   ,,,sqlSession=, factory.openSession ();   ,,,//使用SqlSession创建Mapper接口的代理对象   ,,,userMapper =, sqlSession.getMapper (UserMapper.class);   ,,}   ,@After   public 才能;void 破坏(),throws 异常{   ,,,sqlSession.close ();   ,,,inputStream.close ();   以前,,}

在这两个方法上增加@Before和@Aftrer注解,就可以保证,init()和毁坏()这两个方法,分别在我们真正被测试的方法的前后执行

(一)增添操作(1)编写代码

首先,在usermap接口中增加对应的方法

public  interface  UserMapper  {   ,/* *   ,,*,增加用户   ,,*,@param 用户   ,,*/void 才能addUser (User 用户);   }

接着,在SQL映射文件中,增加新增的映射配置,这些有关内容放在<代码> & lt; insert> & lt;/insert> & lt; insert  id=癮ddUser", parameterType=癱n.ideal.domain.User"比;   insert 才能;into ,,,,,,,,,,,,,用户(用户名、电话、生日、性别、地址)值(# {username}, #,,{电话},#{生日},#{性别},#{地址})   & lt;/insert>

(2)说明:

1, id属性,自然是对应的方法名,而由于这里,我们并不需要拿到返回信息,所以这里并没有返回参数resultType,而方法中的参数又为一个JavaBean类,也就是用户实体类,所以需要在标签属性中,添加一个parameterType属性,其中需要指定这个实体类

2,在文本中书写插入的SQL语句,由于实体类中已经快捷生成了对应的预备方法,所一可以使用<代码> #{}>

3,提示,数据库中id为自增,所以并不需要设置id

(3)注意:

由于添加是更新类的语句,所以在执行插入语句后,需要提交事务,也就是执行对应的提交方法,以提交更新操作,若没有这一句,即使不会报错,也无法正常存入,会被回滚,且这个id被占用

(4)测试代码:

/* *   ,,*,测试新增用户   ,,*,@throws 例外   ,,*/@Test才能   public 才能;void  testUpdateUser (), throws 异常{   ,,,User  User =, new 用户();   ,,,user.setId (17);   ,,,user.setUsername(“修改“);   ,,,user.setTelephone (“18899999999”);   ,,,user.setBirthday (new 日期());   ,,,user.setGender(“女“);   ,,,user.setAddress(“广州“);      ,,,//执行方法   ,,,userMapper.updateUser(用户);      以前,,}

(5)执行结果:

控制台:

怎么在MyBatis中实现增删改查

(6)获取新增用户的id值

首先对于MySQL自增主键来说,在执行插入语句之前,MySQL会自动生成一个自增主键,插入执行后,通过<代码>选择LAST_INSERT_ID() 可以获取这条刚插入记录的自增主键

在SQL映射配置文件中,需要借助<代码> & lt; selectKey> & lt;/selectKey>

注:该标签插入到<代码> & lt; select> & lt;/select>

& lt; selectKey  keyProperty=癷d",订单=癆FTER", resultType=癹ava.lang.Integer"比;   SELECT 才能LAST_INSERT_ID ();   & lt;/selectKey>

测试一下

@Test   public  void  testAddUser (), throws 异常{   User 才能;User =, new 用户();   user.setUsername才能(“增加“);   user.setTelephone才能(“12266660000”);   user.setBirthday才能(new 日期());   user.setGender才能(“男“);   user.setAddress才能(“珠海“);   System.out.println才能(“执行插入前“,+,用户);//才能执行方法   userMapper.addUser才能(用户);   System.out.println才能(“执行插入后“,+,用户);   }

怎么在MyBatis中实现增删改查