Mybatis增删改

【增】

【1、在接口中写一个用来新增的接口】
  1. public void insertUser(User us) ;
【2、分别用两种不同的形式来实现新增的功能,如下】
  1. public static void addUser(){
  2. SqlSession session = sf.openSession() ;
  3. User us = new User() ;
  4. us.setName("YaoMing");
  5. us.setNumber("11");
  6. us.setPosition("中锋");
  7. us.setTeam("休斯敦火箭");
  8. int iCount = session.insert("com.crayon.test.IMyBatis.insertUser",us) ;
  9. session.commit();
  10. System.out.println("成功新增"+iCount+"条记录");
  11. }
  12. public static void addUserInterface(){
  13. SqlSession session = sf.openSession() ;
  14. User us = new User() ;
  15. us.setName("YaoMing");
  16. us.setNumber("11");
  17. us.setPosition("中锋");
  18. us.setTeam("休斯敦火箭");
  19. IMyBatis ib = session.getMapper(IMyBatis.class) ;
  20. ib.insertUser(us);
  21. session.commit();
  22. System.out.println("新增成功!");
  23. }
然后直接在main函数中调用方法即可。
这里需要注意的是自己在做学习测试的时候按照这样做可能会出现下面这种情况:
执行新增方法之后对应的中文字段是以?的形式插入到数据库中,这个问题怎么解决呢

如下,找到你的配置数据库连接的地方,然后做如下修改:

然后再试一下,发现成功了。

对于新加的那一段代码,有一个需要注意的?
如果写成
  1. <property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatistest?useUnicode=true&characterEncoding=utf8" />
这样的话就可能抛出如下的异常信息:
Error creating document instance.  Cause: org.xml.sax.SAXParseException; lineNumber: 15; columnNumber: 106; 对实体 "characterEncoding" 的引用必须以 ';' 分隔符结尾。  

通过检查,发现了xml文件中对于url值的设置的时候?后面的参数之间是用“&”连接的,而在xml中这些特殊字符是需要转义的。那么通常对应的转义字符如下:

&lt;

<

小于号

&gt;

>

大于号

&amp;

&

&apos;

单引号

&quot;

"

双引号

【删】

【1、在接口中新增一个接口】
  1. @Delete("delete from user where id =#{id}")
  2. public void deleteUser(int id);
【2、在测试类中写一个删除方法】
  1. public static void deleteUser(){
  2. SqlSession session = null ;
  3. try {
  4. session = sf.openSession();
  5. IMyBatis ib = session.getMapper(IMyBatis.class) ;
  6. ib.deleteUser(14) ;
  7. session.commit();
  8. System.out.println("删除成功!");
  9. } catch (Exception e) {
  10. // TODO Auto-generated catch block
  11. e.printStackTrace();
  12. }
  13. }
【3、在main函数中调用删除方法即可实现想要的效果】

【改】


一个根据id查找的接口
  1. @Select("select * from user where id =#{id}")
  2. public User getUserById(int id) ;
一个更新的接口
  1. @Update("update user set name=#{name},team=#{team},position=#{position},number=#{number} where id=#{id}")
  2. public void updateUser(User us) ;
在测试类中做如下代码测试:
  1. public static User getUserByID(int id) {
  2. SqlSession session = null ;
  3. try {
  4. session = sf.openSession() ;
  5. IMyBatis ib = session.getMapper(IMyBatis.class) ;
  6. User us = ib.getUserById(id) ;
  7. return us ;
  8. } catch (Exception e) {
  9. // TODO Auto-generated catch block
  10. e.printStackTrace();
  11. }
  12. return null ;
  13. }
  1. public static void updateUser(User us){
  2. SqlSession session = null ;
  3. try {
  4. session = sf.openSession() ;
  5. IMyBatis ib = session.getMapper(IMyBatis.class ) ;
  6. us.setName("易建联");
  7. us.setNumber("9");
  8. us.setTeam("雄鹿");
  9. us.setPosition("大前锋");
  10. ib.updateUser(us);
  11. session.commit();
  12. System.out.println("更新成功");
  13. } catch (Exception e) {
  14. // TODO Auto-generated catch block
  15. e.printStackTrace();
  16. }
  17. }
  1. public static void main(String[] args) {
  2. //查看user信息
  3. //getUserList() ;
  4. //deleteUser() ;
  5. //新增用户信息
  6. //addUser() ;
  7. User u = getUserByID(15);
  8. updateUser(u);
  9. }





原文地址:https://www.cnblogs.com/yaoxiaoxing/p/5446884.html