Mybatis学习(一)
1.ORM模型简介:
2.传统jdbc的缺陷
3.mybatis的概述:
4.mybatis的说明文档官网http://www.mybatis.org/mybatis-3/zh/getting-started.html;
要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于 classpath 中即可。
如果使用 Maven 来构建项目,则需将下面的 dependency 代码置于 pom.xml 文件中和测试的junit包:
<?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.xiaoqiang,mybatis</groupId> <artifactId>mybatisDemo</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.6</version> </dependency> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.6</version> </dependency> <!-- https://mvnrepository.com/artifact/junit/junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> </project>
创建数据库表中的映射实体类:
package com.xiaoqiang.entity; public class User { private int id; private String name; private String className; private String score; @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", className='" + className + '\'' + ", score='" + score + '\'' + '}'; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getClassName() { return className; } public void setClassName(String className) { this.className = className; } public String getScore() { return score; } public void setScore(String score) { this.score = score; } }
设置mybatis.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="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/student"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <mappers> <mapper resource="mapper/UserMapper.xml"/> </mappers> </configuration>
创建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.xiaoqiang.entity.User"> <select id="selectBlog" resultType="com.xiaoqiang.entity.User"> select * from user; </select> <insert id="insertUser" parameterType="com.xiaoqiang.entity.User"> insert into user (id,name,className,score) values (#{nane},#{className},#{score}); </insert> </mapper>
通过Test来测试下插入跟查询
import com.xiaoqiang.entity.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.IOException; import java.io.InputStream; import java.util.List; public class Test { @org.junit.Test public void ceshi() throws IOException { String resource="mybatis.xml"; InputStream inputStream= Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream); SqlSession sqlSession=sqlSessionFactory.openSession(); User user=new User(); user.setName("黄豪强"); user.setClassName("软件工程2班"); user.setScore("100"); user.setId(1); int success=sqlSession.insert("insertUser",user); sqlSession.commit(); System.out.println(success); /* List<User> list=sqlSession.selectList("selectBlog"); for(User user:list) { System.out.println(user); }*/ sqlSession.close(); } }
mybatis整个流程图,主要操作部分为图中蓝色部分,SqlSessionFactory会话工厂只需执行一次:
mybatis整个架构流程: