1.创建项目
创建一个JavaWeb项目
2.到入相关的Jar包
- mybatis:mybatis-3.1.1.jar
- mysql驱动包:mysql-connector-java-5.1.7-bin.jar
3.编写data.sql
drop database if exists mybatistest;
create database mybatistest;
use mybatistest;
create table t_user(
user_id int primary key auto_increment,
username varchar(30),
password varchar(30)
)engine=innobd auto_increment=1 character set utf8;
4. mybatis-config.xml 和 jdbc.properties配置文件
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>
<!-- 读取jdbc.properties -->
<properties resource="jdbc.properties"></properties>
<!-- 开发环境配置:
development:开发阶段
work:工作阶段
-->
<environments default="development">
<environment id="development">
<!-- 事务管理配置:jdbc -->
<transactionManager type="JDBC" />
<!-- 数据源配置: -->
<dataSource type="POOLED">
<property name="driver" value="${mysql.driver}" />
<property name="url" value="${mysql.url}" />
<property name="username" value="${mysql.username}" />
<property name="password" value="${mysql.password}" />
</dataSource>
</environment>
</environments>
<!-- 引入映射文件 -->
<mappers>
<mapper resource="com/test/dao/UserMapper.xml" />
</mappers>
</configuration>
jdbc.properties
mysql.driver=com.mysql.jdbc.Driver
mysql.url=jdbc:mysql://localhost:3306/mybatistest?characterEncoding=utf-8
mysql.username=root
mysql.password=123456
5. 根据数据库表编写User实体类
注意:构造函数和setter,getter方法
6. UserDao接口和UserMapper.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="com.test.dao">
<!-- 自定义结果集映射: -->
<resultMap type="com.test.po.User" id="userMap">
<id column="user_id" property="userId"/>
<result column="username" property="username"/>
<result column="password" property="password"/>
</resultMap>
<!-- CRUD:UserDao -->
<insert id="addUser" parameterType="com.test.po.User">
insert into t_user(username,password) values(#{username},#{password});
</insert>
<delete id="delUser" parameterType="java.lang.Integer">
delete from t_user where user_id = #{userId}
</delete>
<update id="updateUser" parameterType="com.test.po.User">
update t_user set username = #{username}, password = #{password}
where user_id = #{userId}
</update>
<select id="findById" parameterType="java.lang.Integer" resultMap="userMap">
select user_id,username,password
from t_user
where user_id = #{userId}
</select>
<select id="findAll" resultMap="userMap">
select user_id,username,password from t_user
</select>
</mapper>
7. 编写M3Util.java类
用于获取session
public class M3Util {
private static SqlSessionFactory sqlSessionFactory = null;
static{
try {
//读取mybatis配置文件
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSession(){
return sqlSessionFactory.openSession();
}
}
8. 编写测试类
public class TestMybatis {
@Test
public void add() throws IOException{
SqlSession session = M3Util.getSession();
String statement = "com.test.dao
.addUser";
session.insert(statement, new User(null, "张三", "2324"));
//提交事务关闭session
session.commit();
session.close();
}
@Test
public void del() throws IOException{
SqlSession session = M3Util.getSession();
String statement = "com.test.dao.delUser";
session.delete(statement, 2);
//提交事务关闭session
session.commit();
session.close();
}
@Test
public void update() throws IOException{
SqlSession session = M3Util.getSession();
String statement = "com.test.dao.updateUser";
User user = new User(3, "李四", "111111", new Date());
session.update(statement, user);
//提交事务关闭session
session.commit();
session.close();
}
@Test
public void find() throws IOException{
SqlSession session = M3Util.getSession();
String statement = "com.test.dao.findById";
User user = session.selectOne(statement, 3);
System.out.println(user);
//提交事务关闭session
session.commit();
session.close();
}
@Test
public void findAll() throws IOException{
SqlSession session = M3Util.getSession();
String statement = "com.test.dao.findAll";
List<User> list = session.selectList(statement);
for (User user : list) {
System.out.println(user);
}
//提交事务关闭session
session.commit();
session.close();
}
}
关于起别名
typeAlias 是为单一类起别名,type=”类名”,alias=”别名”
package 是为包下所有类起别名,别名为类名或者类名小写.
<typeAliases>
<typeAlias type="com.test.po.User" alias="User"/>
<package name="com.test.po"/>
</typeAliases>