1.引入Mybatis的依赖(在后续测试时注意需要加上mysql的依赖)
使用maven对Mybatis的依赖进行管理,在pom.xml文件中进行添加该依赖
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.2</version>
</dependency>
2.创建与数据库表中对应的实体类
以Admin类为例
public class Admin {
private int id;
private String account;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
}
3.在resources目录下创建一个mybatis的核心配置文件进行并且进行相关的配置
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--配置属性文件-->
<!--该处使用properties标签进行properties文件的引入-->
<!--配置设置-->
<settings>
<!--配置日志的具体实现方式-->
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
<!--配置类型别名,例如配置简称-->
<typeAliases>
<typeAlias alias="Admin" type="com.yzl.mybatispro.model.Admin"/>
</typeAliases>
<!-- 环境配置 -->
<!--default设置配置的数据库环境-->
<environments default="development">
<!--可以设置多种数据库环境适应不同的场景,例如本地开发与线上测试-->
<environment id="development">
<!--配置事物管理器-->
<transactionManager type="JDBC"></transactionManager>
<!--数据源的配置 type配置是否使用数据库连接池-->
<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>
<!--定义Sql映射语句-->
<!--该处使用mapper标签进行映射的配置-->
</configuration>
4.开发一个mybatis-dao层的mapper接口
例如AdminDao,其中定义与数据库交互的方法
public interface AdminDao {
//单个参数传递,基本类型无需进行绑定
Admin findAdminById(int id);
//多个参数传递使用@Param进行绑定
Admin login(@Param("acc")String account,@Param("pwd")String password);
//多个参数传递时可以使用引用类型的对象传递
Admin login1(Admin admin);
//单个参数传递时,引用类型的参数需要进行绑定
Admin find(@Param("columns")String columns);
}
5.在resources目录下创建一个对应dao层的sql映射文件例如AdminMapper.xml(此处建议再创建一个目录对所有的映射文件进行管理)
AdminMapper文件中定义sql的语句并且要遵循mybatis的mapper接口的开发规范
注意:
namespace 与 mapper 接口的类路径相同
sql标签中的id属性需要与接口中定义的方法名称一致,parameterType属性与接口中的参数类型一致,resultType属性与接口方法的返回值类型一致,如果是自己定义引用类型此处需要写出全类名
<?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="com.yzl.mybatispro.dao.AdminDao">
<select id="findAdminById" parameterType="int" resultType="Admin">
select id,account,password from admin where id = #{id}
</select>
<select id="login" resultType="Admin">
select id,account,password from admin where account = #{acc} and password = #{pwd}
</select>
<select id="login1" parameterType="Admin" resultType="Admin">
select id,account,password from admin where account = #{account} and password = #{password}
</select>
<select id="find" resultType="Admin">
select id,account,password from admin where ${columns} = 'admin'
</select>
</mapper>
在创建完成之后需要在mybatis的全局配置文件中所有的配置标签的最后面添加一个mapper标签将sql映射文件的路径配置进去
<mappers>
<mapper resource="mappers/AdminMapper.xml"></mapper>
</mappers>
6.测试
使用mybatis中提供的SqlSessionFactory接口与SqlSession接口进行测试
//读取mybatis的配置文件信息
Reader reader = Resources.getResourceAsReader("mybatis-config.xml");
//通过配置文件的信息创建sessionFactory对象,由于sessionFactory对象创建的开销比较大,
// 所以在一个项目中只创建一个,使用完毕之后不用关闭
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
//SqlSession对象用于每次与数据库会话时使用,每次与数据库交互时都会创建一次
SqlSession sqlSession = sessionFactory.openSession();
//通过SqlSession对象创建一个接口的代理对象,传入该接口的类对象信息被该代理对象获取
AdminDao adminDao = sqlSession.getMapper(AdminDao.class);
//通过代理对象可以调用与接口中名称与参数相同的方法,在该接口的映射文件中配置过该方法的名称
Admin admin = adminDao.findAdminById(1);
System.out.println(admin);