前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基于MyBatis的增删改查的基础操作

基于MyBatis的增删改查的基础操作

作者头像
杨校
发布2018-12-24 11:34:27
4340
发布2018-12-24 11:34:27
举报
文章被收录于专栏:Java技术分享圈

版权声明:本文为博主原创文章,未经博主允许不得转载。

MyBtais入门

  1. Mybatis和hibernate的区别
    • hibernate 是一个全表映射的框架,开发人员只需要定义好持久化对象及相对应的映射文件,并且通过hibernate官方提供的方法就可以完成持久化操作,这过程中可以不需要掌握sql语句的书写,就开发效率而言会高于mybatis
    • 缺点:
      • 对sql语句查询的支持比较差
      • 更新数据时,需要发送所以的字段,不支持存储过程
      • 不可通过优化sql来提升性能
    • mybatis是一个半自动映射的框架,需要手工提供POJO、SQL和映射关系相对较hibernate,mybatis需要手写MyBatis的sql语句,工作量较大; 但可以配置动态SQL,并且优化SQL;支持存储过程,就大中型的项目而言,更推荐MyBatis的使用

    2.MyBatis的入门程序 2.1 在项目中引入jar包:

MyBatis所需jar包
MyBatis所需jar包

2.2 创建数据库 -- 创建数据库,名称为 mybatis_study create database mybatis_study; -- 选中名称为 mybatis_study的数据库 use mybatis_study; -- 创建用户表, create table user( # id 整数类型,为主键、自动递增 id int primary key auto_increment, # 用户名 字符串类型,长度30个字符 username varchar(30), # 密码 字符串类型,长度30个字符 password varchar(30) ); 2.3 持久化类 package cn.javabs.mybatisdemo.pojo; public class User{ private Integer id; private String username; private String password; // 生成getter和setter方法--快捷键是---> alt +shift+s 选择r // 覆写 tostring方法--快捷键是---> alt +shift+s 选择 s } 2.4 持久化映射信息配置文件 在src下创建cn.javabs.mybatisdemo.mapper包,用于存放映射文件,命名为UserMapper.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="cn.javabs.mapper.UserMapper"> <!-namespace的属性值命名规范为:映射信息文件所在的包名+映射文件名称--> <mapper namespace ="cn.javabs.mybatisdemo.mapper.UserMapper"> <!--insert标签代表插入标签,parameterType为传入参数的类型--> <insert id="addUser" parameterType="cn.javabs.mybatis.pojo.User"> insert into user(id,username,password) values(#{id},#{username},#{password}) </insert> <mapper> 2.5 持久化核心配置文件: 在src下创建一个xml文件,命名为mybatis-config.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <environments default="mysql"> <environment id="mysql"> <transactionManager type="jdbc"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql:///user"/> <property name="username" value="root"/> <property name="password" value="sorry"/> </dataSource> </environment> </environments> <mappers> <mapper resource="cn/javabs/mapper/UserMapper.xml" /> </mappers> </configuration>


  • 添加用户 public class TestMybatisData{ @Test public void addUserTest(){ // 通过字节输入流获取核心配置文件 InputStream is = TestMybatisData.class.getClassLoader.getResouceAsStream("mybatis-config"); // 构建Sql会话工厂对象 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuild().builder(is); // 通过会话工厂对象获取session SqlSession session = sessionFactory.openSession(); // 实例化持久化对象,并且完成赋值操作 User u = new User(); u.setId(3); u.setUsername("李白"); //insert 中传入的第一个参数为映射文件的全包名+映射文件名 // 第二个参数为持久化对象 int rows = session.insert("cn.javabs.mybatisdemo.mapper.UserMapper.addUser",u); if(rows > 0){ System.out.println("执行成功,已插入"+rows+"条语句"); }else{ System.out.println("执行失败); } } }

  • 删除用户 @Test public void delUserById() { InputStream is = TestData.class.getClassLoader().getResourceAsStream("mybatis-config.xml"); SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is); SqlSession session = sessionFactory.openSession(); User u = new User(); u.setId(3); int rows = session.delete("cn.javabs.mapper.UserMapper.deleteUserById",u); if(rows>0){ System.out.println("语句执行成功,删除"+rows+"条数"); }else{ System.out.println("删除语句失败"); } session.commit(); session.close(); } 映射配置文件: <delete id="deleteUserById" parameterType="Integer"> delete from user where id = #{id} </delete>

  • 更改用户 @Test public void updateUserTest { InputStream is = TestData.class.getClassLoader().getResourceAsStream("mybatis-config.xml"); SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is); SqlSession session = sessionFactory.openSession(); User u = new User(); u.setId(31); u.setUsername("赵云"); int rows = session.update("cn.javabs.mapper.UserMapper.updateUserById", u); if(rows > 0){ System.out.println("更新了"+rows+"条记录"); }else{ System.out.println("更新失败"); } session.commit(); session.close(); } 配置文件可以更改为 <update id="updateUserById" parameterType="cn.javabs.po.User"> update user set username = #{username} where id = #{id} </update>

  • 查询全部用户 @Test public void findAll() { InputStream is = TestData.class.getClassLoader().getResourceAsStream("mybatis-config.xml"); SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is); SqlSession session = sessionFactory.openSession(); User u = new User(); u.setId(3); List<Object> list = session.selectList("cn.javabs.mapper.UserMapper.queryUser"); if(list.size()>0){ for (int i = 1; i < list.size(); i++) { System.out.println("。。。"+list.toString()); } }else{ System.out.println("查询语句失败"); } session.commit(); session.close(); } 配置文件可以更改为: <select id="queryUser" resultType="cn.javabs.po.User"> select * from user </select>

  • 根据Id查询用户 @Test public void findUserById() { InputStream is = TestData.class.getClassLoader().getResourceAsStream("mybatis-config.xml"); SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is); SqlSession session = sessionFactory.openSession(); User u = new User(); u.setId(31); u = session.selectOne("cn.javabs.mapper.UserMapper.queryUserById", u); if(u != null ){ System.out.println("当前用户是:"+u); }else{ System.out.println("查询失败"); } session.commit(); session.close(); } 配置文件可以更改为 <select id="queryUserById" parameterType="Integer" resultType="cn.javabs.po.User"> select * from user where id = #{id} </select>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018年08月07日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MyBtais入门
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档