1.什么是Mybatis?以及Mybatis的使用意义?
初步理解:就是一个关于数据库操作的持久层框架。简化开发流程
2.Mybatis的使用方法【部署过程】
2.1.首先创建项目工程,导入相关jar包,并导入junit测试模块
2.2.加载核心配置文件【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">
<configuration>
<properties resource="jdbc.properties"/>
<!-- 别名 -->
<typeAliases>
<!-- <typeAlias type="com.yanger.pojo.User" alias="User"/> -->
<package name="com.yanger.pojo"/>
</typeAliases>
<!-- 和spring整合后 environments配置将废除 -->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事务管理 -->
<transactionManager type="JDBC" />
<!-- 数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driverClass}" />
<property name="url"
value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" />
<property name="username" value="root" />
<property name="password" value="a1b2c3" />
</dataSource>
</environment>
</environments>
<!-- Mapper的位置 -->
<mappers>
<mapper resource="sqlmap/User.xml"/>
</mappers>
</configuration>
2.3.创建对象【这里创建一个User对象】
package com.yanger.pojo;
import java.io.Serializable;
import java.util.Date;
public class User implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private Integer id;
private String username;// 用户姓名
private String sex;// 性别
private Date birthday;// 生日
private String address;// 地址
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", sex=" + sex
+ ", birthday=" + birthday + ", address=" + address + "]";
}
}
2.4.创建User对象的抽象类【UserMapper】
package com.yanger.mapper;
import com.yanger.pojo.User;
public interface UserMapper {
/**
* 遵循四个原则
* 接口方法名==User.xml中id名
* 返回值类型与Mapper.xml文件中返回值类型要一致
* 方法的入参类型与Mapper.xml中入参类型要一致
* 命名空间绑定此接口
*/
public User findUserById(Integer id);
}
2.5.创建mybatis的映射文件
<?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">
<!-- 写Sql语句 -->
<mapper namespace="com.yanger.mapper.UserMapper">
<!-- 通过ID查询一个用户 -->
<select id="findUserById" parameterType="Integer" resultType="User">
select * from user where id = #{v};
</select>
<!-- 通过用户名模糊查询用户列表
#{}:表示占位符(防sql注入)
${}:字符串拼接(不防)
-->
<select id="findUserByUsername" parameterType="String" resultType="com.yanger.pojo.User">
<!-- select * from user where username like "%"#{v}"%"; -->
select * from user where username like '%${value}%';
</select>
<!-- 添加用户 -->
<insert id="insertUser" parameterType="com.yanger.pojo.User">
<selectKey keyProperty="id" resultType="Integer" order="AFTER">
select LAST_INSERT_ID()
</selectKey>
insert into user(username,birthday,sex,address)
values(#{username},#{birthday},#{sex},#{address})
</insert>
<!-- 修改用户 -->
<update id="updateUserById" parameterType="com.yanger.pojo.User">
update user
set username=#{username},sex=#{sex},birthday=#{birthday},address=#{address}
where id=#{id}
</update>
<!-- 删除用户 -->
<delete id="deleteUserById" parameterType="Integer">
delete from user where id=#{v}
</delete>
</mapper>
2.6.开始测试
package com.yanger.junit;
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;
import org.junit.Test;
import com.yanger.mapper.UserMapper;
import com.yanger.pojo.User;
public class MybatisMapperTest {
@Test
public void testMapper() throws Exception {
// 加载核心配置文件
String resource = "sqlMapConfig.xml";
InputStream in = Resources.getResourceAsStream(resource);
// 创建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
// 创建SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//SqlSession帮我生成一个实现类
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.findUserById(10);
System.out.println(user);
}
}
测试结果【成功运行】
3.小总结
部署的时候最主要就是有三个主要配置文件【这三个文件不能少】