Spring MVC+MyBatis开发(二)如何解决传统JDBC缺陷以及mybatis入门配置

版权声明:如需转载注明出处 https://blog.csdn.net/u011463794/article/details/88901030

XML是什么以及其优势

为了解决传统JDBC开发模式的缺陷,就出现了mybatis等优秀的框架,其中这些框架的核心就是把对数据库的链接与操作的链接语句和sql语句转移到xml文件中,使得我们更改配置或sql语句时无需重新编译整个系统。
下面来介绍一下xml:

  1. 什么是xml
  2. xml的优势
  3. mybatis入门

什么是 XML?

XML 指可扩展标记语言(EXtensible Markup Language)。在电子计算机中,标记指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种的信息比如文章等。它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。

XML的优点

以下内容来自于W3C的xml教程

  • XML的设计宗旨是传输数据,而非显示数据

  • XML 标签没有被预定义。您需要自行定义标签。

  • XML 被设计为具有自我描述性。

    在这里插入图片描述
    如上面的图片显示,这是一个再xml文件,用于存储信息的,而且我们很容易就能通过每个标签的属性(再标签内部使用双引号括起来的就是属性,所有xml文件都是如此)以及值(标签之间包裹的值)获取有用信息,并且提取的时候也很简单,找到对应属性就能获取值。比如上面文件就是代表

			id为16111
			姓名为ace
			性别为男

试想如果按照文字方式存储,取出对应值该多么麻烦,而xml文件就能让我们根据属性取值。
再举一个更简单的例子

<letter>
<from>ace</from>
<to>sxy</to>
<message>I love u</message>
</letter>

很明显,这是一封ace写个sxy的信,内容是I love u;而且这封信具有自我描述性。它拥有留言,同时包含了发送者和接受者的信息。是不是很直观而且便签都是我自定义的。

XML 简化数据共享
在真实的世界中,计算机系统和数据使用不兼容的格式来存储数据。
XML 数据以纯文本格式进行存储,因此提供了一种独立于软件和硬件的数据存储方法。
这让创建不同应用程序可以共享的数据变得更加容易。

所以传统JDBC缺陷都可以用mybatis弥补,mybatis就是使用xml配置数据库链接以及sql语句,减少硬编码

通过mybatis,我们可以将数据库内容转换到JavaBean中

扫描二维码关注公众号,回复: 5931710 查看本文章

mybatis-将配置信息放入xml文件中

在这里插入图片描述
首先你要下载mybatis框架并把jar包导入,构建路径,然后按照上图配置一下文件,其中Model文件夹放置JavaBean,要注意的是你在新建config文件夹后要把设为源文件

数据库链接配置文件SqlMapConfig.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">
<!--上面是指此xml文件需要依照mybatis标准定义写-->
<configuration>
<!-- 设置输出日志 -->	
	<settings>
		<setting name="logImpl" value="LOG4J" />
	</settings>
	<environments default="development">
		<environment id="development">
		<!-- 使用JDBC事务管理 -->	
			<transactionManager type="JDBC" />
			<!-- 数据库连接池 -->	
			<dataSource type="POOLED">
			<!--数据库配置信息-->	
				<property name="driver" value="org.gjt.mm.mysql.Driver" />
				<property name="url"
					value="jdbc:mysql://localhost/test?characterEncoding=utf-8" />
				<property name="username" value="root" />
				<property name="password" value="1023" />
			</dataSource>
		</environment>
	</environments>
	<!-- 下面的就是sql映射配置文件,必须卸载configuration最后,运行时会加载-->	
	<mappers>
		<mapper resource="UserMapper.xml" />
	</mappers>
</configuration>

下面是sql映射文件 UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybaits.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--上面是指此xml文件需要依照mybatis标准定义写-->

<!--命名空间,会根据test去找要执行的sql语句-->
<mapper namespace="test">
	<select id="findUserById" parameterType="int"
		resultType="User">
		select * from user where id=#{id}
	</select>
</mapper>

数据库连接类Dataconnection.java

package com.ace.Test;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class Dataconnection {

	private String resource = "SqlMapConfig.xml";
	private SqlSessionFactory sqlSessionFactory;
	private SqlSession sqlSession = null;
	public SqlSession getConnect(){
		try {
		//通过Resource资源信息加载对象加载数据库配置文件,并产生于数据库交互的会话实例SqlSession
			InputStream input = Resources.getResourceAsStream(resource);
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(input);
		} catch (IOException e) {
			e.printStackTrace();
		}
		sqlSession = sqlSessionFactory.openSession();
		return sqlSession;
	}
}

测试类:

package com.ace.Test;
import java.util.List;
import org.junit.*;
import org.apache.ibatis.session.SqlSession;
import com.ace.Model.User;
public class Main {
	public Dataconnection dbcon = new Dataconnection();
	
	//注意,如果你没有采用junit测试的话,就把下面的方法改为main方法即可
	@Test
	public void TestSelectByName() {
		SqlSession sqlSession = dbcon.getConnect();
		User user = sqlSession.selectOne("test.findUserById",1);
		System.out.println(user);
		sqlSession.close();
	}
}

JavaBean类:User.java

package com.ace.Model;
public class User {
	@Override
	public String toString() {
		return "User [name=" + name + ", age=" + age + ", height=" + height + ", id=" + id + "]";
	}
	private String name;
	private int age;
	private int height;
	private int id;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getUsername() {
		return name;
	}
	public void setUsername(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public int getHeight() {
		return height;
	}
	public void setHeight(int height) {
		this.height = height;
	}
}

要将上面的数据库链接信息改成自己的,下面是运行结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u011463794/article/details/88901030