当前位置: 首页 > 后端技术 > Java

MyBatis快速入门

时间:2023-04-01 14:08:25 Java

什么是框架?框架相当于一个脚手架,里面封装了很多代码。我们只需要在它的基础上进行开发,就可以提高我们的开发效率。什么是MyBatis?MyBatis是一个优秀的持久层框架。它支持自定义SQL、存储过程和高级映射。MyBatis省去了几乎所有的JDBC代码以及设置参数和获取结果集的工作。官方文档:https://mybatis.org/mybatis-3...快速入门我的mysql版本是5.71。准备数据DROPTABLEIFEXISTSuser;CREATETABLEuser(idBIGINT(20)NOTNULLCOMMENT'主键ID',nameVARCHAR(30)NULLDEFAULTNULLCOMMENT'name',ageINT(11)NULLDEFAULTNULLCOMMENT'age',emailVARCHAR(50)NULLDEFAULTNULLCOMMENT'email',PRIMARYKEY(id));INSERTINTOuser(id,name,age,email)VALUES(1,'Jone',18,'test1@baomidou.com'),(2,'Jack',20,'test2@baomidou.com'),(3,'汤姆',28,'test3@baomidou.com'),(4,'桑迪',21,'test4@baomidou.com'),(5,'比利',24,'test5@baomidou.com');2.依赖导入org.mybatismybatis3.5.10mysqlmysql-connector-java;8.0.11org.projectlomboklombok1.18.24providedjunitjunit4.13.2测试3.JavaBean用于映射数据库:类名=表名类成员变量=字段@Data@NoArgsConstructor@AllArgsConstructorpublicclassUser{privateIntegerid;私有字符串名称;私人整数年龄;私人字符串电子邮件;}4。定义接口创建com.nhb.dao.UserDao接口,定义接口方法如下:publicinterfaceUserDao{ListgetAll();}5.xml映射实现接口在resources目录下创建com/nhb/dao/UserDao.xml实现接口并定义sql,内容如下:SELECT*FROM用户6.mybatis配置文件在resources目录下创建mybatis-config配置文件,内容如下:7??.在测试目录com/nhb/MyTest下创建测试单元.java,内容如下:publicclassMyTest{privateSqlSessionsqlSession;@Beforepublicvoidinit()throwsIOException{//定义mybatis配置文件路径Stringresource="mybatis-config.xml";InputStreaminputStream=Resources.getResourceAsStream(资源);//传入对应配置文件的输入流,读取配置文件获取SqlSessionFactory对象SqlSessionFactorysqlSessionFactory=newSqlSessionFactoryBuilder().build(inputStream);//通过SqlSessionFactory(理解为数据库连接)获取sqlSession对象sqlSession=sqlSessionFactory.openSession();}@TestpublicvoidtestUserDao(){//通过sqlSession获取Mapper接口的实现类UserDaouserDao=sqlSession.getMapper(UserDao.class);Listall=userDao.getAll();//遍历输出for(Useruser:all){System.out.println(user);}}@Afterpublicvoiddestroy(){//提交事务sqlSession.commit();//释放资源sqlSession.close();}}高效开发拒绝重复无意义的东西,提高开发效率。在IDEA中设置mybatis-config和UserDao.xml代码模板。IDEA安装MyBatisX插件,界面和实体类相互跳转,实体类自动生成,代码生成等,能复制粘贴就不要手写,容易出错.单个参数的参数获取基本参数使用#{}取值,名字随便写都可以获取参数。推荐使用接口的参数名获取值。定义接口方法UsergetById(Integerid);实现接口方法,定义sqlSELECT*FROMuserWHEREid=#{id}SELECT*FROMuserWHEREid=#{id}ANDname=#{name}ANDage=#{age}ANDemail=#{email}单元测试@TestpublicvoidtestGetByBean(){UserDaouserDao=sqlSession.getMapper(UserDao.class);UsernewUser=newUser(2,"Jack",20,"test2@baomidou.com");用户user=userDao.getByBean(newUser);System.out.println(user);}多参数MyBatis会将多个参数放入一个Map集合中,如果只有一个参数则不需要特殊处理。在有多个参数的情况下,加上@Param来设置参数名。定义接口方法UsergetByMap(@Param("id")Integerid,@Param("name")Stringname);实现接口方法,定义sqlSELECT*FROMuserWHEREid=#{id}ANDname=#{name}Unit测试@TestpublicvoidtestGetByMap(){UserDaouserDao=sqlSession.getMapper(UserDao.class);用户user=userDao.getByMap(1,"Jone");System.out.println(user);}占位符#{}的区别是预编译处理,会把形参变量的值取出来,自动加上引号。${}是字符串替换,直接替换占位符。使用${}会导致sql注入。所以为了防止SQL注入,可以用#{}代替${}核心类sqlSessionFactorysqlSessionFactory是一个SqlSession工厂类,主要用来获取SqlSession对象。//成员方法SqlSessionopenSession();//获取SqlSession对象,传入的参数表示创建的SqlSession是否自动提交SqlSessionopenSession(booleanvar1);sqlSessionSqlSession实现了Closeable接口,也就是说SqlSession是可以关闭的,也就是说SqlSession代表一个可关闭的连接。SqlSession提供了在数据库中执行SQL命令所需的所有方法,同时也提供了事务相关的操作。//成员方法//获取Mapper对象TgetMapper(Classvar1);//提交事务voidcommit();//回滚voidrollback();//释放资源voidclose();CRUD操作定义接口方法//addintsave(Useruser);//deleteintremoveById(Integerid);//修改intupdateById(Useruser);//查询UsergetById(Integerid);实现接口方法,并定义sqlINSERTINTOuserVALUE(#{id},#{name},#{age},#{email})DELETEFROMuserWHEREid=#{id}更新用户SETname=#{name},age=#{age},email=#{email}WHEREid=#{id}SELECT*FROMuserWHEREid=#{id}单元测试@TestpublicvoidtestSave(){UserDaouserDao=sqlSession.getMapper(UserDao.class);UsernewUser=newUser(6,"你真美",25,"jige@baomidou.com");intresult=userDao.save(newUser);系统.out.println(result);}@TestpublicvoidtestRemoveById(){UserDaouserDao=sqlSession.getMapper(UserDao.class);intresult=userDao.removeById(5);System.out.println(result);}@TestpublicvoidtestUpdateById(){UserDaouserDao=sqlSession.getMapper(UserDao.class);UsernewUser=newUser(6,"鸡爱范",21,"jige@www.com");intresult=userDao.updateById(newUser);System.out.println(result);}@TestpublicvoidtestGetById(){UserDaouserDao=sqlSession.getMapper(UserDao.class);用户user=userDao.getById(1);System.out.println(user);}配置文件这里有几个简单的配置来演示。更多配置,查看官方文档:https://mybatis.org/mybatis-3...properties可以使用读取properties配置文件,使用里面的resource属性设置路径配置文件,然后使用${key}获取配置文件中的值。resources目录下有个jdbc.properties文件:jdbc.url=jdbc:mysql://localhost:3306/demo?useSSL=falsejdbc.driver=com.mysql.cj.jdbc.Driverjdbc.username=nhbjdbc.password=*******mybatis-config.xml中:设置即可使用这个标签做一些设置environments配置数据库相关的环境,比如作为事务管理器,连接池相关参数等。mappers将包中所有的mapper接口实现注册为mappers。注意:定义dao接口所在的包,要求xml文件存放的路径与dao接口的包名对应。否则会报错!!<映射器>