什么是框架
- Java EE开发是分层的,分为表现层,业务层,持久层
- 框架是针对某一层的具体解决方案,对某一层重复性的复杂代码进行封装,从而使得开发者将更多的精力专注于业务功能的实现。大大提升开发效率。
- mybatis是专注于持久层的框架,解决项目中对数据库的CRUD操作问题。
mybatis入门小案例
- 创建maven工程,并在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.xxxx</groupId> <artifactId>day02_eesy_01mybatisCRUD</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>
- 定义一个xml配置文件,放置在resources目录下内容如下
<?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"> <environment id="mysql"> <transactionManager type="JDBC"></transactionManager> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"></property> <property name="url" value="jdbc:mysql://localhost:3306/test"></property> <property name="username" value="root"></property> <property name="password" value="123"></property> </dataSource> </environment> </environments> <mappers> <mapper resource="com/xxxx/dao/UserDao.xml"></mapper> </mappers>
- 在java目录创建包com.xxxx.dao,并在其中创建接口UserDao,在其中创建查询方法
public interface UserDao { public List<User> findAll(); public void saveUser(User user); public void updateUser(User User); public void deleteUser(int id); }
- 在java目录创建com.xxxx.domain, 并在其中创建实体类User。
- 在resources目录创建directory多级目录,com/xxxx/dao,创建UserDao.xml(保持跟UserDao接口目录和文件名相同)
<?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.xxxx.dao.UserDao"> <select id="findAll" resultType="com.xxxx.domain.User"> select * from items </select> <insert id="saveUser" parameterType="com.xxxx.domain.User"> insert into items values(null, #{name}, #{price}); </insert> <update id="updateUser" parameterType="com.xxxx.domain.User"> update items set name = #{name}, price = #{price} where id = #{id}; </update> <delete id="deleteUser" parameterType="java.lang.Integer"> delete from items where id = #{id}; </delete>
- 最后一步,编辑测试类
public class MybatisTest { private InputStream resourceAsStream; private SqlSessionFactory factory; private SqlSession sqlSession; @Before public void init() throws Exception{ resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml"); //读取配置文件 factory = new SqlSessionFactoryBuilder().build(resourceAsStream); sqlSession = factory.openSession(); } @Test public void testFindAll(){ try { UserDao userDao = sqlSession.getMapper(UserDao.class); List<User> all = userDao.findAll(); for (User user : all) { System.out.println(user); } resourceAsStream.close(); sqlSession.close(); }catch (Exception e){ e.printStackTrace(); } } @After public void destroy() throws Exception{ resourceAsStream.close(); sqlSession.close(); } }