博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mybatis实战教程(mybatis in action)之三:实现数据的增删改查
阅读量:6509 次
发布时间:2019-06-24

本文共 3488 字,大约阅读时间需要 11 分钟。

前面已经讲到用接口的方式编程。如果不一致就会出错,这一章主要在上一讲基于接口编程的基础上完成如下事情:
1. 用 mybatis 查询数据,包括列表
2. 用 mybatis 增加数据
3. 用 mybatis 更新数据.
4. 用 mybatis 删除数据.

 

查询数据,前面已经讲过简单的,主要看查询出列表的

查询出列表,也就是返回list, 在我们这个例子中也就是 List<User> , 这种方式返回数据,需要在User.xml 里面配置返回的类型 resultMap, 注意不是 resultType, 而这个resultMap 所对应的应该是我们自己配置的

查询列表的语句在 User.xml 中

在 IUserOperation 接口中增加方法:public List<User> selectUsers(String userName);    

现在在 Test 类中做测试

public void getUserList(String userName){        SqlSession session = sqlSessionFactory.openSession();        try {            IUserOperation userOperation=session.getMapper(IUserOperation.class);                       List
users = userOperation.selectUsers(userName); for(User user:users){ System.out.println(user.getId()+":"+user.getUserName()+":"+user.getUserAddress()); } } finally { session.close(); } }

现在在main  方法中可以测试:

public static void main(String[] args) {

        Test testUser=new Test();
        testUser.getUserList("%");
    }

 

可以看到,结果成功查询出来。如果是查询单个数据的话,用第二讲用过的方法就可以了。

用mybatis 增加数据 
在 IUserOperation 接口中增加方法:public void addUser(User user);
在 User.xml 中配置

insert into user(userName,userAge,userAddress) values(#{userName},#{userAge},#{userAddress})

然后在 Test 中写测试方法:

/**     * 测试增加,增加后,必须提交事务,否则不会写入到数据库.     */    public void addUser(){        User user=new User();        user.setUserAddress("人民广场");        user.setUserName("飞鸟");        user.setUserAge(80);        SqlSession session = sqlSessionFactory.openSession();        try {            IUserOperation userOperation=session.getMapper(IUserOperation.class);            userOperation.addUser(user);            session.commit();            System.out.println("当前增加的用户 id为:"+user.getId());        } finally {            session.close();        }    }

用mybatis 更新数据

方法类似,先在 IUserOperation 中增加方法:public void addUser(User user);
然后配置 User.xml 

update user set userName=#{userName},userAge=#{userAge},userAddress=#{userAddress} where id=#{id}

Test 类总的测试方法如下:

public void updateUser(){        //先得到用户,然后修改,提交。        SqlSession session = sqlSessionFactory.openSession();        try {            IUserOperation userOperation=session.getMapper(IUserOperation.class);            User user = userOperation.selectUserByID(4);                        user.setUserAddress("原来是魔都的浦东创新园区");            userOperation.updateUser(user);            session.commit();                    } finally {            session.close();        }    }

用mybatis 删除数据 

同理,IUserOperation 增加方法:public void deleteUser(int id);
配置User.xml

delete from user where id=#{id}

然后在Test类中写测试方法:

/**     * 删除数据,删除一定要 commit.     * @param id     */    public void deleteUser(int id){        SqlSession session = sqlSessionFactory.openSession();        try {            IUserOperation userOperation=session.getMapper(IUserOperation.class);                       userOperation.deleteUser(id);            session.commit();                    } finally {            session.close();        }    }

这样,所有增删改查都完成了,注意在增加,更改,删除的时候要调用session.commit(),这样才会真正对数据库进行操作,否则是没有提交的。

到此为止,简单的单表操作,应该都会了,接下来的时间了,我会讲多表联合查询,以及结果集的选取。 

 

http://blog.csdn.net/woshixuye/article/details/27521071

补充下 resultMap和resultType区别

 

补充下 

column 是对应数据库中表的字段名称 property是对应的bean里面的属性名称

 

你可能感兴趣的文章
小记如何修改xen模块
查看>>
centos访问windowsxp共享资源指南.
查看>>
实时游戏对战引擎Photon
查看>>
C语言位操作控件属性
查看>>
nginx的安装及基本配置,及多个域名服务
查看>>
Servlet访问postgresql数据库并提取数据显示在前端jsp页面
查看>>
不改一行代码定位线上性能问题
查看>>
定义运算符
查看>>
git管理
查看>>
idea演示
查看>>
Android第三十天
查看>>
告别暗黄皮肤变水嫩皮肤的8个小习惯
查看>>
加强Eclipse代码自动提示的方法
查看>>
【HM】第4课:MySQL入门
查看>>
GNS3-地址重叠环境中部署IPsec
查看>>
exchange online 用户疑问之许可证和用户数据归档
查看>>
QImage Mat IplImage 之间的相互转换
查看>>
lsof命令详解
查看>>
使用eclipse与android studio 在开发自定义控件时的区别
查看>>
我的友情链接
查看>>