怎么在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)执行结果:
控制台:
(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中实现增删改查