Mybatis入门

    科技2025-12-18  15

    Mybatis的入门 Day-1

    mybatis的概述mybatis的环境搭建mybatis的入门案例(xml开发,注解)mybatis的概述mybatis的环境搭建Mybatis注解开发:

    mybatis的概述

    mybatis的环境搭建

    mybatis的入门案例(xml开发,注解)

    mybatis的概述

    什么是框架:它是我们软件开发中的一种解决方案,不同的框架解决的是不同的问题。 使用框架的好处:框架封装了很多细节,使开发者可以使用极简的方式实现功能,大大提高开发效率。 **mybatis:**是一个优秀的基于Java的持久层(与数据库相关)框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去加载驱动、创建连接、创建statement等繁杂的过程。它使用了 ”ORM“ 思想实现了结果集的封装。 ORM(Object Relational Mapping)对象关系映射:就是把数据库表和实体类以及实体类的属性对应起来,让我们可以操作实体类就实现操作数据库表。(实体类的属性和数据库表的字段名称保持一致)

    mybatis的环境搭建

    ** 1. 第一步创建maven工程并导入坐标** 找到Maven 工程直接点击 next 之后跟着一步步操作,填写项目名

    进入主页面之后找到文件 pom.xml,在文件配置环境 a.打包方式“jar”

    <packaging>jar</packaging>

    b.导入Mybatis的坐标(查找Mybatis的官网) 复制下面这段依赖并导入

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.itheima</groupId> <artifactId>day01_eesy_01mybatis</artifactId> <version>1.0-SNAPSHOT</version> <!--打包方式 jar--> <packaging>jar</packaging> <!--使用mybatis框架只需要前两个即可--> <dependencies> <!--导入mybatis 的坐标--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.1</version> </dependency> </project>

    c.导入mysql的jar

    <!--导入mysql的jar--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> </dependency>

    到这mybatis框架的环境已经配置完了

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.itheima</groupId> <artifactId>day01_eesy_01mybatis</artifactId> <version>1.0-SNAPSHOT</version> <!--打包方式 jar--> <packaging>jar</packaging> <!--使用mybatis框架只需要前两个即可--> <dependencies> <!--导入mybatis 的坐标--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.1</version> </dependency> <!--导入mysql的jar--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> </dependency> </project>

    可选配置 如果需要日志和单元测试(junit)

    <!--导入日志--> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <!--单元测试--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13</version> </dependency>

    **总的 pom.xml **

    <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.itheima</groupId> <artifactId>day01_eesy_01mybatis</artifactId> <version>1.0-SNAPSHOT</version> <!--打包方式 jar--> <packaging>jar</packaging> <!--使用mybatis框架只需要前两个即可--> <dependencies> <!--导入mybatis 的坐标--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.1</version> </dependency> <!--导入mysql的jar--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> </dependency> <!--导入日志--> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <!--单元测试--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13</version> </dependency> </dependencies> </project>

    将 log4j.properties 放置 resource 目录下 log4.j的文件内容:

    # Set root category priority to INFO and its only appender to CONSOLE. #log4j.rootCategory=INFO, CONSOLE debug info warn error fatal log4j.rootCategory=debug, CONSOLE, LOGFILE # Set the enterprise logger category to FATAL and its only appender to CONSOLE. log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE # CONSOLE is set to be a ConsoleAppender using a PatternLayout. log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n # LOGFILE is set to be a File appender using a PatternLayout. log4j.appender.LOGFILE=org.apache.log4j.FileAppender log4j.appender.LOGFILE.File=C/axis/axis.log log4j.appender.LOGFILE.Append=true log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n

    新建一个axis文件夹(可根据自己的爱好取不同的文件名,取了之后更改File值)

    2. 第二步创建实体类和dao接口 IUserDao.java (IUserMapper.java)

    在com.itheima.domain目录下创建实体类(实体类的属性必须与数据库表的字段名一致)

    User.java:User实现Serializable

    package com.itheima.domain; import java.io.Serializable; import java.util.Date; public class User implements Serializable { private Integer id; private String username; private Date birthday; private String sex; private String address; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "User{" + "id=" + id + ", username='" + username + '\'' + ", birthday=" + birthday + ", sex='" + sex + '\'' + ", address='" + address + '\'' + '}'; } }

    创建接口 IUserDao

    package com.itheima.dao; import com.itheima.domain.User; import java.util.List; /* 用户的持久层接口*/ public interface IUserDao { /*查询所有操作*/ List<User> findAll(); }

    ** 3. 第三步创建Mybatis的主配置文件** SqlMpConfig.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"> <!--Mybatis的主配置文件--> <configuration> <!--配置环境--> <!--default写什么无所谓,但是必须和id一致--> <environments default="mysql"> <!--配置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://localhost:3306/eesy_mybatis?seUnicode=true &amp;characterEncoding=utf8"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <!--指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件--> <mappers> <mapper resource="com/itheima/dao/IUserDao.xml"/> </mappers> </configuration>

    ** 4. 第四步创建映射配置文件** 注意!映射配置文件IUserDao.xml位置和dao接口的包结构相同也就是说,这个.xml文件必须在resources下com下itheima下com目录下

    IUserDao.xml(mapper.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="com.itheima.dao.IUserDao"> <!--配置查询所有--> <!--id为IUserDao方法的名称--> <select id="findAll" resultType="com.itheima.domain.User"> select * from user; </select> </mapper>

    最后测试mybatis是否成功了 MybatisTest.java

    package com.itheima.test; import com.itheima.dao.IUserDao; import com.itheima.domain.User; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.InputStream; /* mybatis的入门案例*/ public class MybatisTest { public static void main(String[] args)throws Exception{ //读取配置文件 InputStream inputStream = Resources.getResourceAsStream("SqlMpConfig.xml");//Mybatis主配置文件 //创建SqlSessionFactory工厂 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); SqlSessionFactory sessionFactory = builder.build(inputStream); //使用工厂生成SqlSession对象 SqlSession session = sessionFactory.openSession(); //使用SqlSession创建Dao接口的代理对象 IUserDao userDao = session.getMapper(IUserDao.class); //使用代理对象执行方法 for (User user:userDao.findAll()) { System.out.println(user); } // 释放资源 session.close(); inputStream.close(); } }

    运行结果:

    Mybatis注解开发:

    把IUserDao.xml文件删除,在dao接口的方法上使用@Select注解,并指定SQL语句;

    package com.itheima.dao; import com.itheima.domain.User; import org.apache.ibatis.annotations.Select; import java.util.List; /* 用户的持久层接口*/ public interface IUserDao { /*查询所有操作*/ @Select("select * from user")//使用注解 List<User> findAll();//方法 }

    同时需要在SqlMpConfig.xml中的mapper配置时,使用class属性指定dao接口的全限定类名

    之前的SqlMpConfig.xml:

    <mappers> <mapper resource="com/itheima/dao/IUserDao.xml"/> </mappers>

    修改后的xml

    <!--指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件 如果不是用xml,而是用注解来配置的话,此处应该使用class属性指定被注解的dao全限定类名--> <mappers> <mapper class="com.itheima.dao.IUserDao"/> </mappers>

    Processed: 0.026, SQL: 9