Mybatis快速入门大全(详细版)

Mybatis快速入门大全(详细版)
MyBatis是一款流行的持久层框架简化了JDBC操作。以下是其基础入门语法1.核心配置文件mybatis-config.xml用于配置数据库连接和映射文件位置。?xml version1.0 encodingUTF-8 ?!DOCTYPEconfigurationPUBLIC-//mybatis.org//DTD Config 3.0//ENhttp://mybatis.org/dtd/mybatis-3-config.dtdconfigurationenvironmentsdefaultdevelopmentenvironmentiddevelopmenttransactionManagertypeJDBC/dataSourcetypePOOLEDpropertynamedrivervaluecom.mysql.cj.jdbc.Driver/propertynameurlvaluejdbc:mysql://localhost:3306/test/propertynameusernamevalueroot/propertynamepasswordvaluepassword//dataSource/environment/environmentsmappersmapperresourceUserMapper.xml//mappers/configuration2.SQL映射文件UserMapper.xml定义SQL语句与Java方法的映射关系。?xml version1.0 encodingUTF-8 ?!DOCTYPEmapperPUBLIC-//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtdmappernamespacecom.example.mapper.UserMapper!-- 查询单个用户 --selectidselectUserparameterTypeintresultTypecom.example.entity.UserSELECT * FROM users WHERE id #{id}/select!-- 插入用户 --insertidinsertUserparameterTypecom.example.entity.UserINSERT INTO users (name, age) VALUES (#{name}, #{age})!-- 获取自增主键 --selectKeykeyPropertyidresultTypeintorderAFTERSELECT LAST_INSERT_ID()/selectKey/insert/mapper3.Java实体类User.java对应数据库表结构。publicclassUser{privateIntegerid;privateStringname;privateIntegerage;// getters/setters}4.Mapper接口UserMapper.java定义操作数据库的方法。publicinterfaceUserMapper{UserselectUser(intid);intinsertUser(Useruser);}5.获取SqlSession并执行操作// 加载配置文件InputStreaminputStreamResources.getResourceAsStream(mybatis-config.xml);SqlSessionFactorysqlSessionFactorynewSqlSessionFactoryBuilder().build(inputStream);// 执行查询try(SqlSessionsessionsqlSessionFactory.openSession()){UserMappermappersession.getMapper(UserMapper.class);Userusermapper.selectUser(1);System.out.println(user.getName());}6.动态SQL根据条件动态生成SQL语句。selectidfindUsersresultTypeUserSELECT * FROM userswhereiftestname ! nullAND name #{name}/ififtestage ! nullAND agegt;#{age}/if/where/select7.参数处理#{}预编译处理防止SQL注入${}直接替换用于表名、列名等selectidselectUsersresultTypeUserSELECT * FROM ${tableName} WHERE age #{minAge}/select8.结果映射处理列名与属性名不一致的情况。resultMapiduserResultMaptypeUseridpropertyidcolumnuser_id/resultpropertynamecolumnuser_name//resultMapselectidselectUserresultMapuserResultMapSELECT user_id, user_name FROM users WHERE id #{id}/select9.事务管理SqlSessionsessionsqlSessionFactory.openSession(false);// 手动提交try{UserMappermappersession.getMapper(UserMapper.class);mapper.insertUser(user1);mapper.insertUser(user2);session.commit();// 提交事务}catch(Exceptione){session.rollback();// 回滚事务throwe;}finally{session.close();}10.注解方式替代XMLpublicinterfaceUserMapper{Select(SELECT * FROM users WHERE id #{id})UserselectUser(intid);Insert(INSERT INTO users (name, age) VALUES (#{name}, #{age}))Options(useGeneratedKeystrue,keyPropertyid)intinsertUser(Useruser);}