本系列文章系本人原创,欢迎转载,转载请注明出处
一、开发前的准备
作为最开始的环境,我们先只介绍MyBatis+MySql,等MyBatis+MySql入门后,我们再引入Spring。所以,现在我们的环境只需要MySql,MyBatis和开发工具(IDE)。
MySql
可以在这里选择适合自己操作系统的MySql安部署。
我们的入门项目是一个简单的购物网站,所以后台数据库会有三个基本的表:用户表,产品表和购物车表。
a. MySql安装部署好后,打开MySql,建立名为smm的数据库:create database smm;
b. 在smm数据库里面建立User表、Product表和Cart表:
use smm; /* 建立用户表 */ create table user(id int primary key auto_increment, name varchar(30) not null, contact_info varchar(50)); /* 建立产品表 */ create table product(id int primary key auto_increment, name varchar(30) not null, description varchar(100)); /* 建立购物车表,因为购物车就是用户和产品的对应关系,所以会有对用户表和产品表的外键 */ create table cart(id int primary key auto_increment, user_id int, product_id int, foreign key(user_id) references user(id), foreign key(product_id) references product(id));
MyBatis
我们的项目是依赖MyBatis的。我们用Maven管理项目依赖,这点将在下面的章节介绍。开发工具(IDE)
我们用Eclipse进行开发,可以在这里获取。
二、MyBatis+MySql入门项目
注:本章源码可以在 这里 获取
打开Eclipse,新建一个Maven Project
在pom.xml中添加项目依赖:mybatis和mysql connector:
<dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.2</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.38</version> </dependency> </dependencies>
我们已经在smm数据库中建立了用户表、产品表和购物车表,如果是传统的开发的话,我们还需要为这些表建立对应的Java类,并配置各Java类和表的对应关系,以及各DAO。但是MyBatis为我们提供了更为方便的方法:使用MyBatis Generator. 它可以根据数据库中已有的表,自动生成对应的类及DAO(MyBatis中的Mapper)。下面就是如何在Eclipse中使用MyBatis Generator的例子:
a. 打开Eclipse,选择Help->Eclipse Marketplace,搜索MyBatis Generator,然后安装。
b. 安装完毕后,右击项目下的src/main/resources目录,选择New->Others->MyBatis->MyBatis Generator Configuration File.
c.将生成的generatorConfig.xml文件内容修改如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN" "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <generatorConfiguration> <!--注意替换location属性的值为mysql connector jar包的位置 --> <classPathEntry location="{path to mysql-connector-java-5.1.38.jar}"/> <context id="context1"> <!--注意password和userId属性的值替换为本地mysql的对应的值--> <jdbcConnection connectionURL="jdbc:mysql://localhost:3306/smm" driverClass="com.mysql.jdbc.Driver" password="root" userId="root" /> <javaModelGenerator targetPackage="com.example.model" targetProject="smm/src/main/java" /> <sqlMapGenerator targetPackage="mapper" targetProject="smm/src/main/resources" /> <javaClientGenerator targetPackage="com.example.mapper" targetProject="smm/src/main/java" type="XMLMAPPER" /> <table schema="smm" tableName="user"> <generatedKey column="id" sqlStatement="MySql" identity="true" /> </table> <table schema="smm" tableName="cart"> <generatedKey column="id" sqlStatement="MySql" identity="true"/> </table> <table schema="smm" tableName="product"> <generatedKey column="id" sqlStatement="MySql" identity="true"/> </table> </context> </generatorConfiguration>
d. 在上一步中,我们配置了MyBatis Generator如何去访问数据库,并生成哪些表对应的Java对象等行为。现在在Eclipse中右击该文件,选择Run as->Run MyBatis Generator。
运行结束后,我们就会看到,Java Model和Mapper (即DAO)以及对应的xml文件(用来存放sql和java对应关系)。
e.最后一步,配置MyBatis如何访问数据库。在src/main/resources下,新建文件:mybatis-config.properties和mybatis-config.xml。
mybatis-config.properties内容如下:driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/smm #下面两行替换为本地的Mysql的用户名和密码 username=root password=root
mybatis-config.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> <properties resource="mybatis-config.properties" /> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="${driver}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> </dataSource> </environment> </environments> <mappers> <mapper resource="mapper/CartMapper.xml" /> <mapper resource="mapper/ProductMapper.xml" /> <mapper resource="mapper/UserMapper.xml" /> </mappers> </configuration>
至此,所有的工作都完成了。可以看到,我们没有写一行代码,只需要按照需求去定制配置文件就完成了所有的工作。接下来,我们写一个类来测试:
public class TestMyBatis {
public static void main(String[] args) throws IOException {
//装在mybatis-config.xml配置文件
InputStream inputStream=Resources.getResourceAsStream("mybatis-config.xml");
//获得SqlSession
SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session=factory.openSession();
//获得UserMapper (及DAO)
UserMapper userMapper=session.getMapper(UserMapper.class);
//新建User对象
User user=new User();
user.setName("name1");
user.setContactInfo("contact_info1");
//向数据库插入新建的User对象并提交事务。
userMapper.insert(user);
session.commit();
}
}
执行main方法,我们会发现数据库中已经插入了在Java中新建的User对象:
这样,我们就完成了一个最基本的Java与数据库交互的项目。可以看到,我们只有在做测试的时候写了Java代码,其他时间都是在定制配置文件,这样就大大的提高了开发效率。至于这些配置文件里面每一项的作用以及MyBatis其他的功能,我们会在接下来的章节中作介绍。