数据库脚本:
create database mybatis01 default character set utf8
use mybatis01
create table user_t(
user_id int primary key auto_increment,
user_name varchar(20),
user_age int
);
1. 导包:
mybatis.jar
mysql-connector.jar
2. 创建mybatis配置文件(src下默认名字为“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>
<!--可以设置多个运行环境,满足不同需要,例如 开发、测试、生产环境上有不同一配置 -->
<environments default="development"><!-- default表示当前使用的配置环境 -->
<environment id="development">
<!--事务管理类型主要有jdbc和managed,前者依赖于数据源获得的连接,后者依赖于容器 -->
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 POOLED表示使用连接池,UNPOOLED表示不使用连接池-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis01" />
<property name="username" value="root" />
<property name="password" value="221121" />
</dataSource>
</environment>
</environments>
<!-- 加入映射文件信息 -->
<mappers>
<!-- 注意:是/不是.-->
<mapper resource="com/xxjqr/first_demo/userMapper.xml"/>
</mappers>
</configuration>
3. 创建实体类:
@Data
public class User {
private int userId;
private String userName;
private int userAge;
}
4. 创建sql映射文件(userMapper.xml,一般在entities下)
<?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,namespace的值习惯上设置成包名+sql映射文件名 -->
<mapper namespace="com.xxjqr.first_demo.userMapper">
<!-- type指定的是对应的实体类 -->
<!-- 表字段和对应实体属性命名一致时可以不配置-->
<resultMap type="com.xxjqr.first_demo.User" id="userResultMap">
<!-- id用来配置表的主键与类的属性的映射关系 ,column指定的是表的字段名; property指定的是类的属性名-->
<id column="user_id" property="userId"/>
<!-- result用来配置 普通字段与类的属性的映射关系 ,column指定的是表的字段名; property指定的是类的属性名-->
<result column="user_name" property="userName"/>
<result column="user_age" property="userAge"/>
</resultMap>
<!-- 定位:namespace+id -->
<insert id="insertUser" parameterType="com.xxjqr.first_demo.User">
insert into user_t(user_name,user_age) values(#{userName},#{userAge})
</insert>
</mapper>
5. 编写数据库操作:
public class UserDao {
public int save(User user){
int i =0;
String path="myBatis-config.xml";
SqlSession session = null;
Reader reader = null;
try {
//获取配置文件的信息
reader = Resources.getResourceAsReader(path);
//构建sessionfactory
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
//创建session
session = sessionFactory.openSession();
//启用事务,这里默认已启用
//执行数据处理,第一个参数用“命名空间+sql id"来定位sql,第二个参数用来给sql传参数
i = session.insert("com.xxjqr.first_demo.userMapper.insertUser", user);
//提交事务
session.commit();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
session.rollback();
}finally{
if(reader!=null){
try {
reader.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(session!=null){
session.close();
}
}
return i;
}
}
6. 编写测试类
public class TestUserDao {
private UserDao userDao = new UserDao();
@Test
public void test() {
User user = new User();
user.setUserName("丁昌江");
user.setUserAge(22);
int i = userDao.save(user);
System.out.println("受影响行数:"+i);
}
}