标签:4.6 margin 文件输入 primary 语句 tst driver ram 配置
MyBatis是这个框架现在的名字,而此框架最早的名字是IBatis,其名字的含义是“internet”、“abatis”两个单词的组合,是在2002年的时候开始的一个开源项目,在2010年6月16日Apache将项目交与Google进行管理,更名MyBatis。所以2010年之后,MyBatis框架逐渐成为主流,比Hibernate发展更快。
IBatis和MyBatis两者的操作原理是相同的。IBatis变为了MyBatis之后,核心操作没有改变,但是配置部分有部分变化。
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
持久层发展:实体Bean的设计思想 → JDO → Hibernate → MyBatis → JPA标准。MyBatis的性能优于Hibernate。
MyBatis官网:http://www.mybatis.org/mybatis-3/
本次使用Eclipse的Maven进行项目的构建,在pom.xml文件中添加如下代码;如果使用普通Java项目按需添加Jar包即可。
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.6</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.39</version> </dependency>
在项目下新建目录:config,将config目录添加到classpath中(Build Path)。
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=UTF8 username=root password=mysqladmin
<?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> <!-- 资源文件 --> <properties resource="dbconfig.properties"/> <environments default="development"> <!-- 定义数据库连接池 --> <environment id="development"> <!-- 一个数据库的资源配置 --> <transactionManager type="JDBC"/> <!-- 进行事务管理 --> <dataSource type="POOLED"> <!-- 配置数据源 --> <!-- 数据库的驱动程序路径,配置的mysql驱动包中的类名称 --> <property name="driver" value="${driver}"/> <!-- 数据库的连接地址 --> <property name="url" value="${url}"/> <!-- 数据库连接的用户名 --> <property name="username" value="${username}"/> <!-- 数据库的连接密码 --> <property name="password" value="${password}"/> </dataSource> </environment> </environments> <!-- 配置的是每一张表的映射文件 --> <mappers> <!-- 映射文件路径, 与POJO类同包 --> <mapper resource="com/github/logsave/pojo/EmpMapper.xml"/> </mappers> </configuration>
对于一些配置做如下解释:
建立一张emp表,创建对应的简单Java类也是Emp类。
-- 创建‘mybatis‘数据库 CREATE DATABASE mybatis CHARACTER SET UTF8; -- 创建‘emp‘数据表 CREATE TABLE emp ( empno INT(4), ename VARCHAR(10) NOT NULL , job VARCHAR(9) , mgr INT(4) , hiredate DATE , sal DOUBLE(7,2) , PRIMARY KEY (empno) );
package com.github.logsave.pojo; import java.util.Date; public class Emp { private Integer empno; private String ename; private String job; private Integer mgr; private Date hiredate; private double sal; public Integer getEmpno() { return empno; } public void setEmpno(Integer empno) { this.empno = empno; } public String getEname() { return ename; } public void setEname(String ename) { this.ename = ename; } public String getJob() { return job; } public void setJob(String job) { this.job = job; } public Integer getMgr() { return mgr; } public void setMgr(Integer mgr) { this.mgr = mgr; } public Date getHiredate() { return hiredate; } public void setHiredate(Date hiredate) { this.hiredate = hiredate; } public double getSal() { return sal; } public void setSal(double sal) { this.sal = sal; } @Override public String toString() { return "Emp [empno=" + empno + ", ename=" + ename + ", job=" + job + ", mgr=" + mgr + ", hiredate=" + hiredate + ", sal=" + sal + "]"; } }
此时虽然建立了Java类,但是简单Java类一定需要一个与它配合的映射文件。数据库Emp表对应的简单Java类是Emp.java,与Java类同一路径下新建EmpMapper.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"> <!-- 每个POJO都对应MyBatis的一个命名空间,不能重复。 设置命名空间,可以与不同表的同类型操作进行区分,使用时以“namespace.id”的方式调用。
命名空间任意命名,均可正常调用,确保唯一性,一般按表名称实体类或表名称。 resultType使用全路径。 --> <mapper namespace="com.github.logsave.pojo.EmpMapper"> <select id="selOne" resultType="com.github.logsave.pojo.Emp"> SELECT * FROM emp WHERE empno = #{empno} </select> <insert id="creatOne" parameterType="com.github.logsave.pojo.Emp"> INSERT INTO emp(empno,ename,job,mgr,hiredate,sal) VALUES (#{empno},#{ename},#{job},#{mgr},#{hiredate},#{sal}) </insert> </mapper>
增加操作之中是针对于简单Java类之中的内容进行取出并填充,所以在访问属性的时候使用“#{属性名称}”,编写SQL语句时最后一定不要加“;”。
多个XML配置文件及POJO之间相互引用,初学MyBatis容易出错。配置文件之间的引用关系如下图:
package com.github.logsave.test; import java.io.IOException; import java.io.Reader; import java.util.Date; 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 com.github.logsave.pojo.Emp; public class Test01 { public static void creat(SqlSession sqlSession) { Emp emp = new Emp(); /** * 测试时运行第二次会报错:Duplicate entry ‘7499‘ for key ‘PRIMARY‘ * 原因是主键冲突了,修改Empno即可。 */ emp.setEmpno(7499); emp.setEname("ALLEN"); emp.setJob("SALESMAN"); emp.setMgr(7695); emp.setHiredate(new Date()); emp.setSal(1600.00); System.out.println("数据更新行数:" + sqlSession.insert("com.github.logsave.pojo.EmpMapper.creatOne",emp)); sqlSession.commit(); // 事务提交 } public static void selectByEmpNo(SqlSession sqlSession,int empno) { System.out.println(sqlSession.selectOne("com.github.logsave.pojo.EmpMapper.selOne",empno)); } public static void main(String[] args) { try { // 1、取得操作的SqlSession对象 String resource = "mybatis-config.xml"; // MyBatis配置文件路径 Reader reader = Resources.getResourceAsReader(resource); // 当前配置文件输入流 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); // 数据库会话工厂 SqlSession sqlSession = sqlSessionFactory.openSession(); // 取得连接 // 2、操作简单Java类 // creat(sqlSession); // 增加数据 selectByEmpNo(sqlSession,7499); // 按empno查询数据 sqlSession.close(); // 关闭连接 } catch(IOException e) { e.printStackTrace(); } } }
此时数据库之中已经正常保存了我们添加的数据。
总结一下MyBatis操作的步骤:
标签:4.6 margin 文件输入 primary 语句 tst driver ram 配置
原文地址:https://www.cnblogs.com/yan-lei/p/10311776.html