1.什么是mybatis?
MyBatis是一种优秀的持久层框架MyBatis采用了简单的XML或注解配置来映射Java对象与数据库表,因此更易于学习和使用。MyBatis可以通过缓存机制、延迟加载等特性来优化数据库访问性能,提高系统的响应速度。MyBatis允许开发人员在XML文件中嵌入原生SQL语句,这使得在需要时可以轻松地使用数据库特有的功能和语法。总的来说,MyBatis的优点在于其灵活性、性能优化和易用性,使得它成为许多Java开发者的首选持久层框架之一。
2.mybatis初体验
(1)先在idea新建项目,新建一个实体类,这个实体类包括你在数据表中的各个列元素名。
如图,我建的是一个user表,再依次get,set方法,有参无参构造插入。
(2)在resours下创立以下2个文件
其中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> <!-- 环境配置:default:默认使用那个数据源 --> <environments default="mysql"> <!-- 数据源环境 --> <environment id="mysql"> <!-- transactionManager:事务管理器 JDBC:手动提交事务 MANAGED:交给第三方框架管理 --> <transactionManager type="JDBC"/> <!-- 数据源: type:数据源类型 1. POOLED:带连接池的数据库,性能高 2.JNDI:外部数据源 3.UNPOOLED:不带连接池的数据源 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.cj.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/你的表名?serverTimezone=Asia/Shanghai&useSSL=false"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <!-- 加载mapper映射文件 --> <mappers> <mapper resource="UserDao.xml"/> </mappers> </configuration>
第二个写入
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- namespace:命名空间,现在随便写 后期专门写法 --> <mapper namespace="xxx"> <!--sql语句:每一个sql称为一个statement--> <!--查询statement:select 属性: id:唯一标识符 parameterType:输入参数类型,如果输入参数简单数据类型,可以省略 自定义类类型,一定不能省略:全限定名(包.类) resultType: 结果集类型:查询一条记录转换那个对象类型: 自定义类类型,全限定名(包.类) sql语句占位符: #{名字},${名字} 如果parameterType是简单数据类型,名字随便写 如果parameterType是自定义类类型, 名字写的是类对应的属性名 --> <select id="queryBySex" parameterType="String" resultType="com.fs.user"> select * from enroll where sex=#{usex} </select> <insert id="AddUser" parameterType="com.fs.user"> insert into enroll(id,sex,age,birthplace,qq,email) values(#{id},#{sex},#{age},#{birthplace},#{qq},#{email}); </insert> <update id="UpdateUser" parameterType="com.fs.user"> update enroll set id=#{id},sex=#{sex},age=#{age},birthplace=#{birthplace},qq=#{qq},email=#{email} where qq='123'; </update> </mapper>
ok,以上都处理之后,我们就能愉快的进行测试我们写入的sql代码了
public class UserDaoTest { @Test public void testQueryById() throws IOException { //使用mybatis操作数据库 /* 1.加载mybatis全局配置文件 2.创建SqlSessionFactory对象(构建者设计模式:SqlSessionFactoryBuilder) 3.根据SqlSessionFactory对象创建sqlSession对象 4.调用sqlSession对象的方法,执行sql语句 5.关闭sqlSession */ //1.加载mybatis全局配置文件 InputStream in = Resources.getResourceAsStream(" mybatis-config.xml"); //2.创建SqlSessionFactoryBuilder对象 SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder(); //3.创建SqlSessionFactory对象 SqlSessionFactory sqlSessionFactory = builder.build(in); //4.创建sqlSession对象 SqlSession sqlSession = sqlSessionFactory.openSession(); //5.执行sql语句 statementID:namespace.statementId // System.out.println(user); user user1=new user("武弟","男",18,"日本","214214","277@qq.com"); // int row = sqlSession.insert("xxx.AddUser", user1); // sqlSession.commit(); int update = sqlSession.update("xxx.UpdateUser", user1); System.out.println(update); sqlSession.commit(); //6.关闭sqlSession sqlSession.close(); } }
谢谢阅读!