创建(create) 更新 (update) 读取(read) 删除(delete) 称作curd操作
curd定义了用于处理数据库的基本原子操作
curd操作放在Dao层下,文档中Mapper XML files(SQL映射XML文件)写的很详细,可以查看文档编写。
查询单条返回:
<select id="selectUser" parameterType="int" resultType="cn.sxt.entity.User">
select * from User where id = #{id}
</select>
DAO层:
public User getUser(int id) throws IOException{
SqlSession sqlSession=MyBatisUtil.getSqlSession();
User user= sqlSession.selectOne("cn.sxt.entity.UserMapper.selectUser",id);
sqlSession.close();
return user;
}
测试:
UserDao userDao=new UserDao();
System.out.println(userDao.getUser(1));
查询所有
<select id="selectAll" resultType="cn.sxt.entity.User">
select * from User
</select>
DAO层
public List<User> getAll() throws IOException{
SqlSession sqlSession=MyBatisUtil.getSqlSession();
List<User> list= sqlSession.selectList("cn.sxt.entity.UserMapper.selectAll");
sqlSession.close();
return list;
}
测试
UserDao userDao=new UserDao();
List<User> list=userDao.getAll();
for(User u:list)
System.out.println(u);
插入更新删除:
<insert id="addUser" parameterType="cn.sxt.entity.User" useGeneratedKeys="true" >
insert into User(name,pwd) values (#{name},#{pwd})
</insert>
<update id="updateUser" parameterType="cn.sxt.entity.User" >
update user set name=#{name},pwd=#{pwd} where id=#{id}
</update>
<delete id="deleteUser" >
delete from user where id=#{id}
</delete>
DAO层:
public int add(User user) throws IOException{
SqlSession sqlSession=MyBatisUtil.getSqlSession();
int result=sqlSession.insert("cn.sxt.entity.UserMapper.addUser",user);
sqlSession.commit();
sqlSession.close();
return result;
}
public int update(User user) throws IOException{
SqlSession sqlSession=MyBatisUtil.getSqlSession();
int result=sqlSession.update("cn.sxt.entity.UserMapper.updateUser",user);
sqlSession.commit();
sqlSession.close();
return result;
}
public int delete(int id) throws IOException{
SqlSession sqlSession=MyBatisUtil.getSqlSession();
int result=sqlSession.update("cn.sxt.entity.UserMapper.deleteUser",id);
sqlSession.commit();
sqlSession.close();
return result;
}
测试:
UserDao userDao=new UserDao();
// 插入
// User user=new User();
// user.setName("张三");
// user.setPwd("1111");
// System.out.println(userDao.add(user));
// 更新
// User user=userDao.getUser(10);
// user.setPwd("222");
// System.out.println(userDao.update(user));
// 删除
// System.out.println(userDao.delete(8));
调试记载:
1 .参数用#{}接收来拼接sql语句
2 .插入更新等语句成功会返回一个大于0的int数据(影响的条数),返回0说明没有成功,影响条数为0
3 .插入更新删除在数据库中被认为是事务,JDBC默认自动提交,但是Mybatis需要手动提交
sqlSession.commit();
4 .在上面DAO代码中
sqlSession.update("cn.sxt.entity.UserMapper.updateUser",user);
会发现把update改成insert,delete改成insert都可以,阅读sqlSession源码发现delete insert都是调用了update方法,来一个user,首先看有没有这个id,有就做修改,没有就插入,所以不会报错。但是最好还是更新就写update,以免增加阅读代码的难度。