Mybatis框架基础学习(三)

来源:互联网 发布:网络代工 编辑:程序博客网 时间:2024/05/17 07:54

本期功能:添加、删除、更新用户

// 新增用户、修改用户、删除用户/** * 1. 自增主键返回: Mysql自增主键,执行insert提交之前自动生成一个自增主键 * 通过mysql函数获取刚刚插入记录的自增主键:LAST_INSERT_ID(),insert之后调用2 * 2. 非自增主键(使用uuid()):使用mysql的uuid函数生成主键,需要修改表中id的属性为String,长度设置为35位 * 先通过uuid()查询得到主键,将主键设置到对象的属性中 */@Testpublic void modifyUser() throws IOException {// mybatis配置文件String resource = "SqlMapConfig.xml";// 得到配置文件流InputStream inputStream = Resources.getResourceAsStream(resource);// 创建会话工厂,builder中要传入配置文件信息SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);// 得到sqlSessionSqlSession sqlSession = sqlSessionFactory.openSession();SqlSession sqlSession2 = sqlSessionFactory.openSession();SqlSession sqlSession3 = sqlSessionFactory.openSession();// 使用sqlSession操作数据库Timestamp time = new Timestamp(System.currentTimeMillis());User user = new User();user.setFirst_name("Aron");user.setLast_name("Alice");user.setLast_update(time);System.out.println("新增用户");sqlSession.insert("test.insertUser", user);// 提交事務sqlSession.commit();// 获取用户主键System.out.println(user.getActor_id());user.setFirst_name("Arons");user.setLast_name("Alices");System.out.println("更新用户");sqlSession2.update("test.updateUser", user);sqlSession2.commit();System.out.println("删除用户");sqlSession3.delete("test.deleteUser", user.getActor_id());// 释放资源sqlSession.close();sqlSession2.close();sqlSession3.close();}
配置文件:

<!-- 添加用户 parameterType:指定的输入类型是POJO#{}:指定POJO的属性名,接收POJO属性对象,Mybatis通过ONGL获取对象属性值--><insert id="insertUser" parameterType="com.cupdata.zicon.cobatis.User"><!-- 将插入的主键返回到User对象中,只适用于自增主键 --><selectKey keyProperty="actor_id" order="AFTER" resultType="java.lang.Integer">SELECT LAST_INSERT_ID();</selectKey>insert into actor(actor_id,first_name,last_name,last_update)value(#{actor_id},#{first_name},#{last_name},#{last_update});</insert><update id="updateUser" parameterType="com.cupdata.zicon.cobatis.User">update actor set first_name=#{first_name}, last_name=#{last_name} where actor_id=#{actor_id}</update><delete id="deleteUser" parameterType="java.lang.Integer">delete from actor where actor_id = #{id}</delete>
总结

/** * Mybatis和Hibernate本质区别和应用场景 */Hibernate:是一个标准的ORM框架(对象关系映射)。入门门槛较高。不需要写sql语句。不足:对SQL语句优化和修改比较困难应用场景:需求变化不多的中小型项目,后台管理系统,ERP,OA,ORMMybatis:专注Sql本身,需要自己编写SQL,修改和优化比较方便。是一个不完全的ORM框架,实现了部分映射。应用场景:需求变化多的项目,互联网项目



0 0