怎么做招聘网站,微信朋友圈广告如何投放,西安做网站公司哪家好 应该怎么选择,wordpress 手机站MyBatis入门程序
目录
1. 下载 Mybatis 核心包2. 创建工程#xff0c;引入 MyBatis 核心包及依赖包3. 创建 customer 表#xff0c;建立与表对应的 domain使用 lombok#xff0c;开启注解创建 Customer 类4. 创建 MyBatis 核心配置文件 SqlMappingConfig.xml5. 创建表对象…MyBatis入门程序
目录
1. 下载 Mybatis 核心包2. 创建工程引入 MyBatis 核心包及依赖包3. 创建 customer 表建立与表对应的 domain使用 lombok开启注解创建 Customer 类4. 创建 MyBatis 核心配置文件 SqlMappingConfig.xml5. 创建表对象的关系映射 Mapping 文件编写 sql 语句6. 在核心配置文件当中引入 Mapping7. 创建工厂执行 sql 语句抽取工具类MyBatis 查询所有用户MyBatis 整体架构总结parameterTyperesultTypeselectOneselectList1. 下载 Mybatis 核心包
MyBatis官网MyBatis-github下载地址
2. 创建工程引入 MyBatis 核心包及依赖包
这里为了方便学习我们利用 Idea 创建一个普通的 Java 工程后期再整合成 Web 工程。 创建完工程后新建一个 lib 文件夹用来存放jar包。将 MyBatis 所需的jar包都放到 lib 文件夹中。 然后选中所有jar包右键选择 add as library将jar包添加到工程中jar包前面出现箭头则添加完成。
3. 创建 customer 表建立与表对应的 domain
首先进入数据库的图形化工具然后创建一个 叫 mybatis 的数据库字符集设为 utf-8 在 mybatis 数据库中创建一个表建表语句如下
/*
Navicat MySQL Data TransferSource Server : itlike
Source Server Version : 50720
Source Host : localhost:3306
Source Database : mybatisTarget Server Type : MYSQL
Target Server Version : 50720
File Encoding : 65001Date: 2018-12-04 14:13:49
*/SET FOREIGN_KEY_CHECKS0;-- ----------------------------
-- Table structure for customer
-- ----------------------------
DROP TABLE IF EXISTS customer;
CREATE TABLE customer (cust_id int(11) NOT NULL AUTO_INCREMENT,cust_name varchar(255) DEFAULT NULL,cust_profession varchar(255) DEFAULT NULL,cust_phone varchar(255) DEFAULT NULL,email varchar(255) DEFAULT NULL,PRIMARY KEY (cust_id)
) ENGINEInnoDB AUTO_INCREMENT11 DEFAULT CHARSETutf8;-- ----------------------------
-- Records of customer
-- ----------------------------
INSERT INTO customer VALUES (1, 鲁班, 射手, 13499887733, 12341241qq.com);
INSERT INTO customer VALUES (2, 李白, 刺客, 18977665521, libai163.com);
INSERT INTO customer VALUES (3, 阿轲, 刺客, 18977665997, aikeqq.com);
INSERT INTO customer VALUES (4, 德玛西亚, 肉盾, 13700997665, demaxiya.126.com6);
INSERT INTO customer VALUES (5, 亚索, 战士, 13586878987, yasuoqq.com);
INSERT INTO customer VALUES (6, 奶妈, 辅助, 13398909089, namaqq.com);
INSERT INTO customer VALUES (7, 剑圣, 刺客, 13398909088, jiansheng163.com);
INSERT INTO customer VALUES (8, 盖伦, 肉盾, 15923242231, gailun126.com);
INSERT INTO customer VALUES (9, 锤石, 辅助, 13398908900, 8888163.com);
INSERT INTO customer VALUES (10, 阿木木, 辅助, 13398908928, 13398908928qq.com);建表如图
使用 lombok开启注解
使用 lombok 可以使用注解功能注解可以减少代码量。 首先要导入 lombok 的jar包要使用注解必须在设置里勾选支持注解如下图
创建 Customer 类
SetterGetter //使用注解生成 get 与 set 方法
public class Customer {private Integer cust_id;private String cust_name;private String cust_profession;private String cust_phone;private String email;Overridepublic String toString() {return Customer{ cust_id cust_id , cust_name cust_name \ , cust_profession cust_profession \ , cust_phone cust_phone \ , email email \ };}
}4. 创建 MyBatis 核心配置文件 SqlMappingConfig.xml
在 src 文件下创建一个 SqlMappingConfig.xml 文件里面写入配置代码
?xml version1.0 encodingUTF-8 ?
!DOCTYPE configurationPUBLIC -//mybatis.org//DTD Config 3.0//ENhttp://mybatis.org/dtd/mybatis-3-config.dtd
configuration!-- spring整合后 environments配置将废除 使用spring中的连接池 --environments defaultdevelopmentenvironment iddevelopment!-- 使用jdbc事务管理 --transactionManager typeJDBC /!-- 数据库连接池 --dataSource typePOOLEDproperty namedriver valuecom.mysql.jdbc.Driver /property nameurlvaluejdbc:mysql://localhost:3306/mybatis?characterEncodingutf-8 /property nameusername valueroot /property namepassword value1234 //dataSource/environment/environments
/configuration5. 创建表对象的关系映射 Mapping 文件编写 sql 语句
在 domain 包下创建一个与 domain 类名相同的 xml 文件此处为 Customer.xml在里面写入编写 sql 语句
?xml version1.0 encodingUTF-8 ?
!DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacemyTest!--根据cust_id查询客户--select idqueryCustomerById parameterTypeInt resultTypecom.itlike.domain.CustomerSELECT * FROM customer WHERE cust_id #{cust_id}/select
/mapper6. 在核心配置文件当中引入 Mapping
核心配置文件 SqlMappingConfig.xml 中加载映射文件
!--加载映射文件--
mappersmapper resourcecom/myxq/domain/Customer.xml/mapper
/mappers7. 创建工厂执行 sql 语句
创建一个测试类 MyTest.java位于 com.itlike.test 包中利用单元测试运行代码
public class MyTest {Testpublic void test() throws IOException {// 1.sqlSessionFactoryBuilder 加载配置文件SqlSessionFactoryBuilder sqlSessionFactoryBuilder new SqlSessionFactoryBuilder();// 2.读取配置文件InputStream resourceAsStream Resources.getResourceAsStream(sqlMappingConfig.xml);// 3.获取session工厂SqlSessionFactory sessionFactory sqlSessionFactoryBuilder.build(resourceAsStream);// 4.获取会话 ---JDBC 连接SqlSession sqlSession sessionFactory.openSession();// 5.执行sql// selectOne 查询一条记录如果查询多条记录会抛出异常Customer customer sqlSession.selectOne(queryCustomerById, 1); // 查询 ID 为1 的数据System.out.println(customer);// 6.关闭sessionsqlSession.close();}}运行结果成功从数据库中查询到单个用户的数据。
Customer{cust_id2, cust_name李白, cust_profession刺客, cust_phone18977665521, emaillibai163.com}抽取工具类
在 MyBatis 中有些资源只需要加载一次并且每次做查询时都是大量相同的代码因此我们可以抽取出一个工具类专门用来加载资源。
创建一个 MybatisUtils.java 文件作为工具类
// 抽取工具类
public class MybatisUtils {public static final SqlSessionFactory sessionFactory;static { // 由于这些东西只需要加载一次所以放入 static 代码块中// 1.获取 SqlSessionFactoryBuilderSqlSessionFactoryBuilder sqlSessionFactoryBuilder new SqlSessionFactoryBuilder();// 2.加载映射文件InputStream resourceAsStream null;try {resourceAsStream Resources.getResourceAsStream(sqlMappingConfig.xml);} catch (IOException e) {e.printStackTrace();}// 3.获取 sessionFactorysessionFactory sqlSessionFactoryBuilder.build(resourceAsStream);}public static SqlSession openSession(){return sessionFactory.openSession();}}抽取出工具类之后之前的代码就变得十分简洁了。 测试类 MyTest.java
public class MyTest {Testpublic void test() {// 调用Mybatis工具类SqlSession sqlSession MybatisUtils.openSession();// 5.sql 查询Customer customer sqlSession.selectOne(queryCustomerById, 1);System.out.println(customer);// 6.关闭会话sqlSession.close();}
}MyBatis 查询所有用户
上面的测试代码中查询了 id 为 1 的用户这次我们来实现查询所有用户 在 MyBatis 中sql 语句都是写在表对象的关系映射中的我们在 Customer.xml 中添加以下语句
!--查询所有的客户不需要参数--
select idqueryAllCustomer resultTypecom.itlike.domain.Customer
SELECT * FROM customer
/select然后来到测试类 MyTest.java 中
public void test2(){// 调用工具类SqlSession sqlSession MybatisUtils.openSession();// 查询 sql// selectList() 查询一条或多记录返回 List 集合ListCustomer queryAllCustomer sqlSession.selectList(queryAllCustomer);for (Customer customer : queryAllCustomer) {System.out.println(customer);}
}运行结果表中所有数据都被查出。
Customer{cust_id1, cust_name鲁班, cust_profession射手, cust_phone13499887733, email12341241qq.com}
Customer{cust_id2, cust_name李白, cust_profession刺客, cust_phone18977665521, emaillibai163.com}
Customer{cust_id3, cust_name阿轲, cust_profession刺客, cust_phone18977665997, emailaikeqq.com}
Customer{cust_id4, cust_name德玛西亚, cust_profession肉盾, cust_phone13700997665, emaildemaxiya.126.com6}
Customer{cust_id5, cust_name亚索, cust_profession战士, cust_phone13586878987, emailyasuoqq.com}
Customer{cust_id6, cust_name奶妈, cust_profession辅助, cust_phone13398909089, emailnamaqq.com}
Customer{cust_id7, cust_name剑圣, cust_profession刺客, cust_phone13398909088, emailjiansheng163.com}
Customer{cust_id8, cust_name盖伦, cust_profession肉盾, cust_phone15923242231, emailgailun126.com}
Customer{cust_id9, cust_name锤石, cust_profession辅助, cust_phone13398908900, email8888163.com}
Customer{cust_id10, cust_name阿木木, cust_profession辅助, cust_phone13398908928, email13398908928qq.com}MyBatis 整体架构 总结
parameterType
指定输入参数类型mybatis 通过 ognl 从输入对象中获取参数值拼接在 sql 中。
resultType
指定输出结果类型mybatis 将 sql 查询结果的一行记录数据映射为 resultType 指定类型的对象。如果有多条数据则分别进行映射并把对象放到容器List中。
selectOne
查询一条记录如果使用 selectOne 查询多条记录则抛出异常。
selectList
可以查询一条或多条记录返回一个 List 集合。