數(shù)據(jù)庫(kù)腳本:
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. 導(dǎo)包:
mybatis.jar
mysql-connector.jar
2. 創(chuàng)建mybatis配置文件(src下默認(rèn)名字為“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>
<!--可以設(shè)置多個(gè)運(yùn)行環(huán)境,滿足不同需要背犯,例如 開(kāi)發(fā)坏瘩、測(cè)試、生產(chǎn)環(huán)境上有不同一配置 -->
<environments default="development"><!-- default表示當(dāng)前使用的配置環(huán)境 -->
<environment id="development">
<!--事務(wù)管理類(lèi)型主要有jdbc和managed,前者依賴于數(shù)據(jù)源獲得的連接媳板,后者依賴于容器 -->
<transactionManager type="JDBC" />
<!-- 配置數(shù)據(jù)庫(kù)連接信息 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. 創(chuàng)建實(shí)體類(lèi):
@Data
public class User {
private int userId;
private String userName;
private int userAge;
}
4. 創(chuàng)建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">
<!-- 為這個(gè)mapper指定一個(gè)唯一的namespace蛉幸,namespace的值習(xí)慣上設(shè)置成包名+sql映射文件名 -->
<mapper namespace="com.xxjqr.first_demo.userMapper">
<!-- type指定的是對(duì)應(yīng)的實(shí)體類(lèi) -->
<!-- 表字段和對(duì)應(yīng)實(shí)體屬性命名一致時(shí)可以不配置-->
<resultMap type="com.xxjqr.first_demo.User" id="userResultMap">
<!-- id用來(lái)配置表的主鍵與類(lèi)的屬性的映射關(guān)系 ,column指定的是表的字段名破讨; property指定的是類(lèi)的屬性名-->
<id column="user_id" property="userId"/>
<!-- result用來(lái)配置 普通字段與類(lèi)的屬性的映射關(guān)系 ,column指定的是表的字段名; property指定的是類(lèi)的屬性名-->
<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. 編寫(xiě)數(shù)據(jù)庫(kù)操作:
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);
//構(gòu)建sessionfactory
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
//創(chuàng)建session
session = sessionFactory.openSession();
//啟用事務(wù)奕纫,這里默認(rèn)已啟用
//執(zhí)行數(shù)據(jù)處理,第一個(gè)參數(shù)用“命名空間+sql id"來(lái)定位sql,第二個(gè)參數(shù)用來(lái)給sql傳參數(shù)
i = session.insert("com.xxjqr.first_demo.userMapper.insertUser", user);
//提交事務(wù)
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. 編寫(xiě)測(cè)試類(lèi)
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("受影響行數(shù):"+i);
}
}