mybatis(2)--配置mybatis实现连接数据库查询
1.新建项目
2.在src下创建一个xml文件 比如这xml文件名为 mybatis.xml
一下为初始xml文件代码
<?xml version="1.0" encoding="UTF-8" ?>
<!-- mybatis核心配置文件的dtd -->
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 引用jdbc配置文件 该配置文件为连接数据库的数据参数 -->
<properties resource="jdbc.properties" />
<!--环境配置,配置的是开发者模式 -->
<environments default="development">
<environment id="development">
<!-- 声明jdbc事务处理 -->
<transactionManager type="JDBC"/>
<!-- 数据源:数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.driverUrl}"/>
<property name="username" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 引用Mapper接口的sql映射文件 -->
<mapper resource="com/ht/mapper/EmpDAO.xml"/>
</mappers>
</configuration>
3. 创建接口类 这里设 接口类是:com.ht.mapper.EmpDAO.class
package com.ht.mapper; import java.util.List; import com.ht.vo.EmpVo; //接口名称必须与对应的XML文件名相同,并且必须在同一个包中
public interface EmpDAO {
/**
* 获取所有的员工信息
* @return EmpVo集合
*
* 方法名称对应xml中的id名称
*/
List<EmpVo> listAll(); }
4. 在创建接口类的映射文件 EmpDAO.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!-- mybatis的dtd文件 -->
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace属性: 用于指定指向那个接口 -->
<mapper namespace="com.ht.mapper.EmpDAO">
<!--select标签都对应接口中的一个方法,
id属性:指定接口中具体的方法名,
id属性值必须唯一
resultType:执行sql返回的结果类型
xml的文件名称必须与接口名称相同,并且必须在同一个包中
-->
<select id="listAll" resultType="com.ht.vo.EmpVo">
<!--格式化sql语句的标签 -->
<![CDATA[
select * from Emp
]]>
</select>
</mapper>
此文件在 mybatis.xml中配置如下:
<mappers>
<mapper resource="com/ht/mapper/EmpDAO.xml"/>
</mappers>
5. 后台实现接口类
package com.ht.action;
import java.util.List;
import javax.sql.DataSource;
import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.transaction.TransactionFactory;
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
import com.ht.base.DataSourceFactory;
import com.ht.mapper.EmpDAO;
import com.ht.vo.EmpVo;
public class MybatisJava {
public static void main(String[] args) {
//调用自定义的DataSource工厂获取数据源
DataSource dataSource = DataSourceFactory.getDataSource();
// 新建MyBatis提供的JDBC事务工厂
TransactionFactory transactionFactory = new JdbcTransactionFactory();
// 创建MyBatis的Environment环境对象(模式:开发者模式,事务,数据源)
Environment environment = new Environment("development", transactionFactory, dataSource);
// 由环境对象构建出MyBatis的Configuration配置对象
Configuration configuration = new Configuration(environment);
// 把映射器接口添加到配置对象中,让MyBatis可以正常找到映射接口
configuration.addMapper(EmpDAO.class);
// 由SqlSessionFactoryBuilder和configuration配置对象获取SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
// 由sqlSessionFactory打开连接获取SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
// 由SqlSession获取映射器接口EmpDAO
EmpDAO empDAO = sqlSession.getMapper(EmpDAO.class);
// 映射器接口调用方法,执行指定的SQL语句EmpVo
List<EmpVo> empList = empDAO.listAll();
//遍历集合
if (empList != null && empList.size() > 0) {
for (EmpVo emp : empList) {
System.out.println(emp);
}
}
}
}
两种方法获取数据源:
1.自定义的DataSource工厂获取数据源
package com.ht.base; import org.apache.ibatis.datasource.pooled.PooledDataSource;
import javax.sql.DataSource; public class DataSourceFactory {
//创建数据库连接池
public static DataSource getDataSource() {
//数据库驱动
String driver = "com.mysql.jdbc.Driver";
//uri地址
String url = "jdbc:mysql://localhost:3306/mybatis";
//数据库用户名
String username = "";
//数据库密码
String password = "1234";
return new PooledDataSource(driver, url, username, password);
} }
2.读取mybatis.xml获取数据源
package com.ht.base; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.IOException;
import java.io.InputStream; /**
* SqlSessionFactory工具类
* @author Steven
*
*/
public class SqlSessionFactoryUtils { private static SqlSessionFactory sqlSessionFactory;
static { try {
// 创建SqlSessionFactoryBuilder对象 SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
// 创建核心配置文件的输入流
InputStream inputStream = Resources.getResourceAsStream("mybatis.xml");
// 通过输入流创建SqlSessionFactory对象
sqlSessionFactory = ssfb.build(inputStream);
// new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("SqlMapConfig.xml"));
} catch (IOException e) {
e.printStackTrace();
} } /**
* 获取SqlSessionFactory
* @return
*/
public static SqlSessionFactory getSqlSessionFactory() {
return sqlSessionFactory;
}
}
mybatis(2)--配置mybatis实现连接数据库查询的更多相关文章
- 学习myBatis - 如何配置myBatis
这篇文章主要学习如何配置myBatis. 要学习新东西要讲究方法,要从三个层面去理解它:它是什么(what),为什么要学它(why),怎么用它(how).有了学习方法学习的效率才高. 1.myBati ...
- 【spring boot】14.spring boot集成mybatis,注解方式OR映射文件方式AND pagehelper分页插件【Mybatis】pagehelper分页插件分页查询无效解决方法
spring boot集成mybatis,集成使用mybatis拖沓了好久,今天终于可以补起来了. 本篇源码中,同时使用了Spring data JPA 和 Mybatis两种方式. 在使用的过程中一 ...
- MyBatis Cache配置
@(MyBatis)[Cache] MyBatis Cache配置 MyBatis提供了一级缓存和二级缓存 配置 全局配置 配置 说明 默认值 可选值 cacheEnabled 全局缓存的开关 tru ...
- SpringBoot 整合MyBatis 统一配置bean的别名
所谓别名, 就是在mappper.xml配置文件中像什么resultType="xxx" 不需要写全限定类名, 只需要写类名即可. 配置方式有两种: 1. 在 applicatio ...
- MyBatis学习总结-MyBatis快速入门的系列教程
MyBatis学习总结-MyBatis快速入门的系列教程 [MyBatis]MyBatis 使用教程 [MyBatis]MyBatis XML配置 [MyBatis]MyBatis XML映射文件 [ ...
- 在MyBatis中查询数据、涉及多参数的数据访问操作、插入数据时获取数据自增长的id、关联表查询操作、动态SQL、关于配置MyBatis映射没有代码提示的解决方案
1. 单元测试 在单元测试中,每个测试方法都需要执行相同的前置代码和后置代码,则可以自定义2个方法,分别在这2个方法中执行前置代码和后置代码,并为这2个方法添加@Before和@After注解,然后, ...
- Java框架之MyBatis 06-全局配置-mapper映射-分步查询
MyBatis MyBatis是Apache的一个开源项目iBatis, iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架. iBatis 提供的持 ...
- 使用ssm(spring+springMVC+mybatis)创建一个简单的查询实例(一)
梳理下使用spring+springMVC+mybatis 整合后的一个简单实例:输入用户的 ID,之后显示用户的信息(此次由于篇幅问题,会分几次进行说明,此次是工程的创建,逆向生成文件以及这个简单查 ...
- MyBatis基本配置和实践(五)
第一步:创建一个Maven工程 第二步:编辑Maven工程的pom.xml,引入mybatis-generator-maven-plugin <?xml version="1.0&qu ...
随机推荐
- MySQL存储过程 CASE语句
MySQL存储过程 CASE语句 除了IF语句,MySQL提供了一个替代的条件语句CASE. MySQL CASE语句使代码更加可读和高效. CASE语句有两种形式:简单的搜索CASE语句. 简单C ...
- JMETER-02
JMeter使用篇 1.界面介绍 2.JMeter-测试计划 测试计划:一个JMeter脚本只有一个测试计划,且测试计划必须启用状态 容易掉的坑:由于JMeter脚本中的每个元器件都可以单独禁用,上级 ...
- jquery 点击显示更多
点击显示更多 html <div class="servicepicture banxin"> <div class="imgcontent" ...
- python 报错 TabError: inconsistent use of tabs and spaces in indentation
写python的时候如果出现如题的错误 TabError: inconsistent use of tabs and spaces in indentation 意为:制表符错误:缩进中制表符和空格使 ...
- Mock.js常用占位符——Basic、Date、Color
1. Basic 在通过占位符引用方法时, Mock.mock('@boolean') : Mock.mock('@boolean()') 都可以调用方法 方法 含义 使用举例 Random.bo ...
- PHP的json_encode()函数与JSON对象
一.问题描述 这周搬砖的时候,前端通过ajax获取后端的数据后,照例用 对象.属性 的方式取值,然而结果总是总是不能如预期般展示在页面上. 先写个 demo 还原下场景:选中一个下拉框列表选项后,会在 ...
- 【数论】 快速幂&&矩阵快速幂
首先复习快速幂 #include<bits/stdc++.h> using namespace std; long long power(long long a,long long b,l ...
- C# 异步(上)
新进阶的程序员可能对async.await用得比较多,却对之前的异步了解甚少.本人就是此类,因此打算回顾学习下异步的进化史. 本文主要是回顾async异步模式之前的异步,下篇文章再来重点分析async ...
- 7、TypeScript数据类型
1.变量声明 var 不要使用 建议使用: let 变量 const 常量,一旦申明不能修改 2.数据类型 2.1布尔值:boolean 2.2数字类型 :number 2.3字符串类型:strin ...
- 2015-11-03 ado.net3
DataReader和DateSet区别: 1. DataReader是一行一行的读,且只能向前读.DateSet是一次性读取出来放到内存中,所以,DataReader读取速度更快,占用内存更低. 2 ...