标签:manager jdb cal cat 必须 word pass 工厂 pool
1:mybatis的概述
mybatis是一个持久层框架,用java编写的。
它封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动,创建连接等繁杂过程
它使用了ORM思想实现了结果集的封装。
2:mybits入门案例:使用mybits进行最简单的查询(sql:select * from user)
mybatis的环境搭建(使用xml方式)
第一步:创建maven工程并导入坐标
第二步:创建实体类和dao的接口
第三步:创建Mybatis的主配置文件SqlMapConifg.xml
第四步:创建映射配置文件IUserDao.xml
环境搭建的注意事项:
第一个:创建IUserDao.xml 和 IUserDao.java时名称是为了和我们之前的知识保持一致。
在Mybatis中它把持久层的操作接口名称和映射文件也叫做:Mapper
所以:IUserDao 和 IUserMapper是一样的
第二个:在idea中创建目录的时候,它和包是不一样的
包在创建时:com.itheima.dao它是三级结构
目录在创建时:com.itheima.dao是一级目录
第三个:mybatis的映射配置文件位置必须和dao接口的包结构相同
第四个:映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名
第五个:映射配置文件的操作配置(select),id属性的取值必须是dao接口的方法名
当我们遵从了第三,四,五点之后,我们在开发中就无须再写dao的实现类。
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>cn.edu.hznu</groupId> <artifactId>mybatis01</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency> <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.12</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> </dependency> </dependencies> </project>
SqlMapConfig.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"> <!-- 配置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"/> <property name="username" value="root"/> <property name="password" value="199945"/> </dataSource> </environment> </environments> <!-- 映射配置文件--> <mappers> <mapper resource="cn/edu/hznu/dao/IUserDao.xml"/> </mappers> </configuration>
IUserDao.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.edu.hznu.dao.IUserDao"> <!-- 配置查询索引--> <select id="findAll" resultType="cn.edu.hznu.domain.User"> select * from user </select> </mapper>
IUserDao.xml
package cn.edu.hznu.dao; import cn.edu.hznu.domain.User; import java.util.List; /** * Created by wjj on 2020/3/28 * * 用户的持久层忌口 */ public interface IUserDao { /* * 查询所有用户操作 * */ List<User>findAll(); }
mybatisTest
package cn.edu.hznu.test; import cn.edu.hznu.dao.IUserDao; import cn.edu.hznu.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 javax.annotation.Resource; import java.io.InputStream; import java.util.List; /** * Created by wjj on 2020/3/28 */ public class MybatisTest { /* * 入门案例 * */ public static void main(String[] args) throws Exception{ //1.读取配置文件 InputStream in= Resources.getResourceAsStream("SqlMapConfig.xml"); //2.创建sqlsessionfactory工厂 SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder(); SqlSessionFactory factory=builder.build(in); //3.生产sqlsession对象 SqlSession sqlSession=factory.openSession(); //4.使用对象创建接口代理对象 IUserDao userDao=sqlSession.getMapper(IUserDao.class); //5.使用代理对象执行操作 List<User>users=userDao.findAll(); for (User user:users){ System.out.println(user); } //6、释放资源 sqlSession.close(); in.close(); } }
项目目录结构
前三步都是为了sqlsession对象,因为sqlsession对象直接操作数据库,分三步,并采用不同的设计模式,是为了解耦合,并且提高灵活性
第四步获得seesion对象后,通过接口类名获得对应的Mapper对象,mapper对象中有sql语句以及查询的类,使用代理模式,对该接口使用代理,后续操作主需要对代理对象进行访问,使用代理可以增强已有方法(理解为代理者是结构的下层,可以实现被代理者的方法并进行修改)
第五步第六步执行方法
标签:manager jdb cal cat 必须 word pass 工厂 pool
原文地址:https://www.cnblogs.com/wjune-0405/p/12592039.html