关闭

使用mybatis访问mysql数据库之一

标签: mybatis
110人阅读 评论(0) 收藏 举报

公司打算使用java来开发新系统,使用了拿来主义的策略。在访问数据库方面,采用了mybatis这个库来访问mysql数据库。

现在在网上学习一下mybatis访问数据库的基本用法。

以下是参考了网上的例子,比方说http://blog.csdn.net/techbirds_bao/article/details/9233599/里面的文章。同时加入了一些个人的理解和描述,用于记录自己学习mybatis的文档。

mybatis访问数据库的第一版

这一版的特点是:程序没有使用interface的方式去访问数据库。而是直接在测试程序中直接调用配置文件中的SQL,同时对SQL的参数进行绑定来查询数据。

数据库准备阶段

在数据库中建立表并加入测试数据。

#创建一个数据库
create database babydb;

#使用新创建的数据库
use babydb;

#建立表并插入数据
Create TABLE user(
  id int(11) NOT NULL AUTO_INCREMENT primary key,
  classification int(3) not null,
  Name varchar(50) DEFAULT NULL,
  address varchar(200) DEFAULT NULL,
  remark varchar(200)
);

insert into user(class,name,address,remark) values(0,'wanglc','www.csdn.net','administrator');
insert into user(class,Name,address,remark) values(1,'wanglc2','www.cnblogs.com','');

commit;

select * from user;

建立开发环境

用Eclipse Java EE IDE for Web Developers. Version: Neon Release (4.6.0)建立一个简单的maven工程。

然后到http://mvnrepository.com/中找到所需要的库文件在maven中的配置,所需要的库有:mybatis 和 mysql 连接数据库的库。将下面的信息,加入maven工程的pom.xml中,如果本机的maven仓库的目录中没有,工程自动会从maven的中央仓库中下载我们所需的库。

<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
	<groupId>org.mybatis</groupId>
	<artifactId>mybatis</artifactId>
	<version>3.2.8</version>
</dependency>


<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<version>5.1.38</version>
</dependency>

对数据库的user表建立对应的表类。对应的文件为User.java

public class User {
    private int id;
    private int classification;
    private String name;
    private String address;
    private String remark;
}
注意:这个类的变量的名字要和表中字段的名字一样。
输入上述信息后,使用快捷键alt + shift + s,为该类建立getters和setters方法,及toString()方法。toString方法不是必须的,本例中却需要,后续会有说明。

具体代码如下:

package babyStudy.mybatisStudy.v1;

public class User {
	private int id;
	private int classification;
	private String name;
	private String address;
	private String remark;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public int getClassification() {
		return classification;
	}
	public void setClassification(int classification) {
		this.classification = classification;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public String getRemark() {
		return remark;
	}
	public void setRemark(String remark) {
		this.remark = remark;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", classification=" + classification + ", name=" + name + ", address=" + address
				+ ", remark=" + remark + "]";
	}
}

对数据库的user表建立配置文件。这个文件中主要定义了SQL语句。对应的文件名称为User.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">

<mapper namespace="babyStudy.mybatisStudy.v1.User">
	<select id="selectUserByID" parameterType="int" resultType="User">
		select * from user where id = #{id}
	</select>
</mapper>

建立工程的配置文件,该配置文件中保存了数据库的连接信息和使用的数据库表对应的配置文件Configuration.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">

<configuration>
	<typeAliases>
		<typeAlias alias="User" type="babyStudy.mybatisStudy.v1.User" />
	</typeAliases>

	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://127.0.0.1:3306/babydb" />
				<property name="username" value="baby" />
				<property name="password" value="baby123" />
			</dataSource>
		</environment>
	</environments>

	<mappers>
		<mapper resource="User.xml" />
	</mappers>
</configuration>


数据库访问测试程序:

package babyStudy.mybatisStudy.v1;

import java.io.Reader;

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 MybatisTestUser {
	public static void main(String[] args) {

		SqlSession session = null;

		try {
			Reader reader = Resources.getResourceAsReader("Configuration.xml");
			SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
			session = sqlSessionFactory.openSession();

			//调用查询语句,并绑定SQL的参数,对数据进行查询。
			User user = (User) session.selectOne("babyStudy.mybatisStudy.v1.User.selectUserByID", 1);
			
			//如果User类中没有覆盖toString(),则下面的信息将显示User类的类名等信息
			System.out.println(user);
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			session.close();
		}
	}

}


上述文件建立完成之后,工程中代码和配置文件的目录结构如下图:

如果不按照这个目录结构,程序在运行的时候,会抛出异常。

运行程序,结果如下:

User [id=1, classification=0, name=wanglc, address=www.csdn.net, remark=administrator]

其他

如果想调整配置文件和代码的目录结构,那么,要修改配置文件 Configuration.xml 和数据库访问测试代码来重新指定文件路径。修改的办法为:以工程的代码的根目录为“根节点”,然后逐个调整文件调用关系。

下面是将代码和配置文件放在一个目录的修改例子。

修改后的目录结构为:

那么,Configuration.xml中的mappers段要改成:

<mappers>
    <mapper resource="babyStudy/mybatisStudy/v1/User.xml" />
</mappers>

MybatisTestUser.java 中读取配置文件的路径要改为:

Reader reader = Resources.getResourceAsReader("babyStudy/mybatisStudy/v1/Configuration.xml");


修改完成之后,输入alt + shift + x,然后输入j,运行程序,结果同上。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:14109次
    • 积分:464
    • 等级:
    • 排名:千里之外
    • 原创:32篇
    • 转载:0篇
    • 译文:0篇
    • 评论:6条
    文章分类
    最新评论