在之前的文章中对Mybatis的使用有了大致的了解, 又进一步学习了数据源的相关配置、事务管理器等内容, 但是在业务中,我们写的最多的就是 CRUD, 各种各样的 CRUD, 在这片文章中将对其进行学习 !
注:在使用 mybatis 框架的时候需要保证每个类都有一个不含参数的构造函数, 以下例子每个类都有
- 对 User 对象的 Crud …
@Data
class User{
private String uid;
private String uname;
private String upassword;
}
user table id Varchar(); primary Key name Varchar(); password Varchar():insert
向数据库中插入一条用户记录:
insert into user(id, name, password) values(#{uid}, #{uname}, #{upassword})
user = new User();
sqlSession.insert("path.to.insertUser", user)
插入多条数据: 主要使用 Mybatis 提供的 , 同时需要数据库支持多行插入:
insert into user(id, name, password) values (#{item.uid}, #{item.uname}, #{item.upassword})
ListdeleteuserList= new ArrayList (); userList.add(user1); userList.add(user2); userList.add(user3); ... userList.add(user4); Integet rs = sqlSession.insert("path.to.insertUserList", userList);
删除一条 user
delete from user where id = #{id}
user = new User("...");
// 也可以仅仅传入一个 id 的值
sqlSession.delete("path.to.deleteUser", user);
删除多条 user:
delete from user where id in #{item}
sqlSession.delete("path.to.deleteUserByIds", userList);
update
user = new User("...");
update user set
id = #{id},
sex =#{sex},
adress = #{adress}
where id = #{id}
sqlSession.update("path.to.updateUser", idList)
select
select 语句和 update、delete、 insert 语句的不同之处在于,select 语序必须对数据库返回的查询数据进行处理:
从数据库中查询一条指定 id 的user 信息:
User user = (User)sqlSession.selectOne("path.to.selectUser", "id");
// 或者
User user = new User("...");
User rsUser = (User)sqlSession.selectOne("path.to.selectUser", user);
//这样的话, mybatis 会通过 User 中的 getId()方法, 得到 id;
查询多条语句:
查询所有的 user
//主要是使用 selectList 这个函数;
List userList = session.selectList("org.mybatis.example.userMapper.selectUserAll");
Iterator iterator = userList.iterator();
while(iterator.hasNext()){
User user = (User) iterator.next();
System.out.println(user.toString());
}
查询组合类的数据(主要使用到 mybatis 提供的 resultMap ):
Create table user( `id` varchar(30), `sex` varchar(30), `adress` varchar(30) ); Create table order( `id` varchar(30), `count` int, `customer` varchar(30), primary key (`id`) );
class Order{
private String id;
private Integer count;
private User customer;
}
class User{
private String id;
private String sex;
private String adress;
}
问题: 怎么通过一条 sql 语句查找出来一 条订单信息(有一个的数据类型) ?
<--负责告诉框架怎么将结果装到类里面-->
// java 语句
Order order = (Order)session.selectOne("org.mybatis.example.OrderMapper.findOrderById", "1");
问题: 当订单包含许多物品(一个购物车)的时候怎么一次查出来并返回这个订单?
class Order{
private String id;
private String count;
private User customer;
private List- items;
}
class Item{
private String id;
private String name;
private double price;
}
解决:
UserGroup userGroup = (UserGroup)session.selectOne("org.mybatis.example.userGroupMapper.selectUserGroupById", "1");
总结:
- mybatis 的
- 使用 mybatis 框架写 crud 时, 先在 navicat 写 sql 语句并调试, 然后将 sql 语句放入
至此, mybatis 框架的学习先告一段落。



