MyBatis01:环境搭建 + 全局配置文件属性详解 + 数据库连接池

文章目录

  • MyBatis:创建web项目
    • 一、环境搭建
      • 1. 导jar包
      • 2. 在src下新建全局配置文件mybatis.xml(编写JDBC)
        • 2.1 在全局配置文件中引入dtd或schema(通俗来说:就是不导入就没提示)
        • 2.2 mybatis.xml代码编写
      • 3. 建数据库表
      • 4. 编写实体类
      • 5. 编写 “实体类名+Mapper.xml” 文件
      • 6. 在mybatis.xml中加载“实体类+Mapper.xml“
      • 7. 测试文件
    • 二、全局配置文件属性详解
      • 1. < transactionManager/ > type 属性可取值
      • 2. < dataSouce/ > type 属性
    • 三、数据库连接池

MyBatis:创建web项目

作用:对底层的JDBC进行封装
优点:使用 MyBatis 不用编写Dao实现类,只用写sql命令就好
该项目的目录:
MyBatis01:环境搭建 + 全局配置文件属性详解 + 数据库连接池_第1张图片

一、环境搭建

1. 导jar包

MyBatis01:环境搭建 + 全局配置文件属性详解 + 数据库连接池_第2张图片

2. 在src下新建全局配置文件mybatis.xml(编写JDBC)

mybatis对配置文件的文件名没有要求。

2.1 在全局配置文件中引入dtd或schema(通俗来说:就是不导入就没提示)

如果导入网络dtd没提示,执行如下操作:导入本地的dtd、xsd文件:
MyBatis01:环境搭建 + 全局配置文件属性详解 + 数据库连接池_第3张图片

2.2 mybatis.xml代码编写



<configuration>
	
	<environments default="default">
		
		<environment id="default">
			
			<transactionManager type="JDBC">transactionManager>
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver"/>
				<property name="url" value="jdbc:mysql://localhost:3306/people"/>
				<property name="username" value="root"/>
				<property name="password" value="root"/>
			dataSource>
		environment>
	environments>
	  
	<mappers>
		<mapper resource="com/bjsxt/mapper/UserMapper.xml"/>
	mappers>
configuration>

事务对jdbc进行管理:
事务默认是“自动提交”,通过 conn.setAutoCommit(false); 进行手动提交。
src下的代码全会编译到classes文件夹下,之所以所有代码都往src下放,因为在classes文件下,可以快速通过classpath:快速找到xx文件夹。

3. 建数据库表

create table `user`(
	`id` varchar(64) NOT NULL COMMENT 'ID',
	`name` varchar(255) NOT NULL COMMENT '姓名',
	`age` int NOT NULL COMMENT '年龄',
	PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表';

4. 编写实体类

public class UserEntity {	
	private String id;	// ID
	private String name;	// 姓名
	private String age;	// 年龄
	
	//set、get、toString方法
	......
}

5. 编写 “实体类名+Mapper.xml” 文件

文件作用:编写需要执行的SQL命令
反射机制:要书写类的全路径,才能反射到。
在框架的 mybatis.xml 文件中,只要是自己写的类,就要写成全路径




<mapper namespace="a.b" >
	
	<select id="selAll" resultType="com.xxsxt.pojo.User">
		select * from user
	select>
mapper>

6. 在mybatis.xml中加载“实体类+Mapper.xml“

  

<configuration>
   
   <environments default="default">
   	
   	<environment id="default">
   		
   		<transactionManager type="JDBC">transactionManager>
   		<dataSource type="POOLED">
   			<property name="driver" value="com.mysql.jdbc.Driver"/>
   			<property name="url" value="jdbc:mysql://localhost:3306/people"/>
   			<property name="username" value="root"/>
   			<property name="password" value="root"/>
   		dataSource>
   	environment>
   environments>
     
   <mappers>
   	<mapper resource="com/bjsxt/mapper/UserMapper.xml"/>
   mappers>
configuration>

7. 测试文件

public class Test {
	public static void main(String[] args) throws IOException {
		InputStream is = Resources.getResourceAsStream("myabtis.xml");
		//使用工厂设计模式
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
		//生产SqlSession
		SqlSession session=factory.openSession();
		
		List<User> list = session.selectList("a.b.selAll");
		for (Useruser: list) {
			System.out.println(user.toString());
		}		
		session.close();
	}
}

二、全局配置文件属性详解

mybatis将数据库表中的列名通过反射找同名属性,就是找实体类中的set( xx ) 方法;这就是mybatis中的重要过程 “自动映射” (autoMapping),通过同名进行自动映射;
mybatis3.2之前找set() 方法;mybatis3.2之后直接找属性。
反射也可以给私有属性赋值。

1. < transactionManager/ > type 属性可取值

JDBC:事务管理使用 JDBC 原生事务管理方式
MANAGED: 把事务管理转交给其他容器(Spring容器)。原生 JDBC 事务 setAutoMapping(false);

2. < dataSouce/ > type 属性

POOLED: 使用数据库连接池
UNPOOLED: 不实用数据库连接池,和直接使用 JDBC 一样
JNDI:java 命名目录接口技术.(使用java语言调用其他语言写的接口)

三、数据库连接池

  1. 数据库连接池:在内存中开辟一块空间,在该空间中存放多个数据库连接对象。
    MyBatis01:环境搭建 + 全局配置文件属性详解 + 数据库连接池_第4张图片
    JDBC Tomcat Pool:直接由 tomcat 产生数据库连接池。
    c3p:
    dbcp:
    druid:

使用数据库连接池的目的:在高频率访问数据库时,使用数据库连接池可以降低服务器的系统压力,提升程序的运行效率。

  1. 实现JDBC tomcat Pool的步骤:
    2.1 在 web 项目中的 META-INF 中存放 context.xml
    编写数据库连接池的相关属性。

<Context>
	
		
		
		
	<Resource 
		driverClassName="com.mysql.jdbc.Driver"
		url="jdbc:mysql://localhost:3306/ssm"
		username="root"
		password="root"
		maxActive="50"
		maxIdle="20"
		name="test"
		auth="Container"
		maxWait="10000"
		type="javax.sql.DataSource"
	/>
Context>

2.2 把项目发布到tomcat中,数据库连接池产生了
启动 tomcat 就会生成数据库连接池

  1. 可以再 java 程序中使用 JNDI 获取数据库连接池中的对象
    3.1 Context :上下文接口 context.xml 文件对象类型
@WebServlet("/pool")
public class DemoServlet extends HttpServlet {
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
		try {
			Context cxt = new InitialContext();
			DataSource ds = (DataSource) cxt.lookup("java:comp/env/test");	//通过全路径获取数据库连接池
			Connection conn = ds.getConnection();		//从连接池中获取连接对象
			PreparedStatement ps = conn.prepareStatement("select * from flower");
			ResultSet rs = ps.executeQuery();
			res.setContentType("text/html;charset=utf-8");
			PrintWriter out = res.getWriter();
			while(rs.next()){
				out.print(rs.getInt(1)+"    "+rs.getString(2)+"
"
); } out.flush(); out.close(); rs.close(); } catch (NamingException e) { e.printStackTrace(); } } }

tomcat 默认走 Servers 中的配置文件。
在这里插入图片描述
源码下载:https://download.csdn.net/my

你可能感兴趣的:(Mybatis)