一、创建项目
选择maven工程
二、配置pom.xml文件
1、选择打包方式
使用<packaging> </packaging>
标签,中间填打包方式,有jar、war等
2、添加依赖dependency
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.4</version>
</dependency>
</dependencies>
在<dependencies></dependencies>
标签中添加所需要的依赖,一般使用Mybatis连接数据库,有mybatis和mysql-connector-java就行了。如果需要进行单元测试,还可以添加junit依赖。
三、在resources下添加主配置文件SqlMapConfig.xml
1、在开头添加
<?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">
2、添加相关配置
<configuration>
<!--配置properties
可以在标签内部配置连接数据库的信息;也可以通过属性引用外部配置环境信息
resource属性;用于指定配置文件的位置,是按照类路径的写法来写,并且必须存在于类路径下
url属性:是按照URL的写法来写地址。
URL:Uniform Resource Locator 统一资源定位符。它可以唯一标识一个资源的位置
它的写法:
http://localhost:8080/mybatissever/demolservlet
协议 主机 端口 URI
URL:Uniform Resource Identifier 统一资源标识符。它是在应用中可以唯一定义一个资源的
-->
<properties resource="jdbcConfig.properties"><!--或者用url写--></properties>
<!--配置参数-->
<settings>
<!--开启mybatis支持延迟加载-->
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="aggressiveLazyLoading" value="false"/>
</settings>
<!--使用typeAliases配置别名,它只能配置domain中类的别名-->
<typeAliases>
<!--type属性指定实体类全限定类名,alias属性指定别名,当指定了别名就不在区分大小写
<typeAlias type="com.example.domain.User" alias="user"></typeAlias>-->
<!--用于指定需要配置别名的包,当指定之后,该包下的实体类都会注册别名,并且类名就是别名,不在区分大小写-->
<package name="com.example.domain"></package>
</typeAliases>
<!--配置环境-->
<environments default="mysql">
<!--配置mysql的环境-->
<environment id="mysql">
<!--配置事务的类型-->
<transactionManager type="JDBC"></transactionManager>
<!--配置数据源(连接池)-->
<dataSource type="POOLED">
<!--配置连接数据库的4个基本信息-->
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!--指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件-->
<mappers>
<!-- <mapper resource="com/example/dao/UserDao.xml"/>-->
<!--package标签是用于指定dao接口所在的包,当指定了之后就不需要再写mapper以及resource或者class了-->
<package name="com.example.dao"></package>
</mappers>
</configuration>
上图中注释写的比较详细了,我就简单讲讲
(1)其中<properties>
标签中写连接数据库的相关信息,本案例中是使用通过配置文件jdbcConfig.properties中的相关信息来连接数据库的。该文件请自己创建,与主配置文件同级
(2)<settings>
中是一些参数设置,如果简单使用mybatis可以不去考虑
(3)<typeAliases>
配置类的别名,方便后面的使用,不配置也没有什么问题,写全限定类名就行
(4)重要的是<environments default="mysql">
的环境配置,这是连接数据库的关键
(5)<mappers>
是用于配置反射的
四、创建于数据库对应的类和接口
本案例中目录结构如下
com.example.domian 该目录下下对应的类
com.example.dao 该目录下写类对应的接口
类的定义中最好实现Serializable序列化接口
public class User implements Serializable
1、建议成员变量的名称与对应表的字段名称相同,便于后续操作
2、同时生成成员变量的get()、set()和toString()方法
3、在接口中定义增删改查的对应方法
public interface UserDao {
//查询所有用户,查操作
List<User> findAll();
//保存用户,增操作
void saveUser(User user);
}
五、用xml配置文件或注解的方式实现对应功能
1、用xml配置文件的方式
在resources下建立与dao接口同样的目录结构,并在与dao接口同级的目录下添加对应的xxx.xml文件。(注意:xxx必须与接口同名,如接口为IUserDao,则配置文件名为IUserDao.xml)
(1)在配置文件中添加
<?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">
(2)在<mapper namespace="com.example.dao.UserDao">
标签中使用相关标签实现功能
<!--id属性的取指必须是dao接口的方法名-->
<select id="findAll" resultType="com.example.domain.User">
select *from user
</select>
<!--保存用户,增操作-->
<insert id="saveUser" parameterType="com.example.domain.User">
insert into user (id,username,birthday,sex,address)value (#{id},#{username},#{birthday},#{sex},#{address})
</insert>
这里在保存操作中可以直接使用成员变量名的原因就在于,定义的成员变量名与数据库表的的字段名是一样的。
resultType、parameterType两个属性表示返回值类型与参数类型
2、使用注解的方式
(1)不需要添加对应的xxx.xml文件
(2)在dao接口对应的方法上添加对应的注解
public interface IUserDao {
@Select("select * from user")
List<User> findAll();
@Insert("insert into user (id,username,birthday,sex,address)value (#{id},#{username},#{birthday},#{sex},#{address})")
void SaveUser(User user);
}
sql语句直接写在注解中
六、对方法进行测试
1、在test.java目录下建立类似的目录结构
如:com.example.test
2、建立对应的测试类,使用junit进行测试
public class MybatisTest {
private InputStream in;
private SqlSession session;
private UserDao userDao;
@Before//用于在测试方法执行之前执行
public void initail() throws IOException{
//1、读取配置文件
in = Resources.getResourceAsStream("SqlMapConfig.xml");
//2、创建SqlSessionFactory工厂
SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
SqlSessionFactory factory=builder.build(in);
//3、使用工厂生产SqlSession对象
session=factory.openSession();//()中写true的话,表示自动提交,后面就不用提交了
//4、使用SqlSession创建Dao接口的代理对象
userDao=session.getMapper(UserDao.class);
}
@After//用于在测试方法执行之后执行
public void destory() throws IOException {
//提交事务
session.commit();
//6、释放资源
session.close();
in.close();
}
//入门案例
@Test
public void testFindAll() {
//5、使用代理对象执行方法
List<User> users=userDao.findAll();
for(User user:users){
System.out.println(user);
}
}
}
以上只是一些mybatis的基本步骤,具体细节还请自行学习,谢谢!