mybatis连接数据库
- 添加jar包
- 创建数据库
- 配置XML文件
mybatis是通过XML文件完成持久化类和数据库表之间的映射关系的。
XML代码————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="org.fkit.mapper.UserMapper">
<insert id="save" parameterType="org.fkit.domain.User" useGeneratedKeys="true">
INSERT INTO tb_user(name ,sex,age) VALUES (#{name},#{sex},#{age})
</insert>
<select id="selectUser" parameterType="int" resultType="org.fkit.domain.User">
SELECT * FROM tb_user WHERE ID = #{id};
</select>
<update id="modifyUser" parameterType="org.fkit.domain.User">
UPDATE tb_user SET `NAME`=#{name},SEX=#{sex},AGE=#{age} WHERE ID=#{id};
</update>
</mapper>
UserMapper.xml文件路径
(1)<mapper namespace="org.fkit.mapper.UserMapper">
mapper为了指定唯一的namespace,通常会把namespace的值设置成包名+SQL映射文件名,以此保证namespace的值是唯一的。例如:org.fkit.mapper.UserMapper
(2)insert标签
编写SQL插入语句;
id属性值为save,id的值必须是唯一的;
parameterType属性,指明插入时使用的参数类型
useGeneratedKeys属性,表示使用数据库的自动增长策略
#{name},#{sex},#{age},表示取参数中的对象的name、sex、age属性值
resultType或resultMap,查询返回值的类型
XML文件————mybatis-config.xml
MyBatis根配置文件默认被命名为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">
<!--XML配置文件包含对MyBatis系统的核心设置-->
<configuration>
<!--指定MyBatis所用日志的具体实现-->
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
<!--环境配置,即连接的数据库。-->
<environments default="mysql">
<environment id="mysql">
<!--指定事务管理类型,type="JDBC"指直接使用了JDBC的提交和回滚设置-->
<transactionManager type="JDBC" />
<!-- dataSource指数据配置,POOLED是JDBC连接对象的数据源连接池的实现-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/mabatis?characterEncoding=utf8"/>
<property name="username" value="root"/>
<property name="password" value="1"/>
</dataSource>
</environment>
</environments>
<!--mapper告诉了MyBatis去哪里找持久化类的映射文件-->
<mappers>
<mapper resource="org/fkit/mapper/UserMapper.xml" />
</mappers>
</configuration>
mybatis-config.xml文件路径
- 创建FKSqlSessionFactory工厂类
每次操作都需要读取mybatis-config.xml根配置文件,根据根配置文件文件信息创建SqlSessionFactory对象,在获取SqlSession对象,该操作比较频繁,所以需要开发一个工厂类封装以上操作重复的代码。
FKSqlSessionFactory工厂类代码
package org.fkit.factory;
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 java.io.InputStream;
/**
* @Auther: King
* @Date: 2021/4/30 - 04 - 30 - 13:59
* @Description: org.fkit.factory
* @version: 1.0
*/
public class FKSqlSessionFactory {
private static SqlSessionFactory sqlSessionFactory = null;
static {
try {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
}catch (Exception e){
e.printStackTrace();
}
}
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
public static SqlSessionFactory getSqlSessionFactory(){
return sqlSessionFactory;
}
}
FKSqlSessionFactory工厂类文件路径
- 插入操作
不使用工厂类代码
package org.fkit.test;
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.fkit.domain.User;
import java.io.InputStream;
public class MyBatisTest {
public static void main(String[] args) {
//创建Session(会话)实例
SqlSession sqlSession = null;
try{
//读取mybatis-config.xml文件
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//初始化mybatis,创建SqlSessionFactory(会话工厂)类实例
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
sqlSession = sqlSessionFactory.openSession();
//创建User对象
User user = new User("kings","男",22);
//插入数据
sqlSession.insert("org.fkit.mapper.UserMapper.save",user);
//提交事务
sqlSession.commit();
}catch (Exception e) {
//回滚事务
sqlSession.rollback();
e.printStackTrace();
}finally {
try{
//关闭sqlSession
if (sqlSession != null){
sqlSession.close();
}
}catch (Exception e) {
e.printStackTrace();
}
}
}
}
使用FKSqlSessionFactory工厂类代码
package org.fkit.test;
import org.apache.ibatis.session.SqlSession;
import org.fkit.domain.User;
import org.fkit.factory.FKSqlSessionFactory;
public class MyBatisTest {
public static void main(String[] args) {
//创建Session(会话)实例
SqlSession sqlSession = null;
try{
sqlSession = FKSqlSessionFactory.getSqlSession();
//创建User对象
User user = new User("kings","男",22);
//插入数据
sqlSession.insert("org.fkit.mapper.UserMapper.save",user);
//提交事务
sqlSession.commit();
}catch (Exception e) {
//回滚事务
sqlSession.rollback();
e.printStackTrace();
}finally {
try{
//关闭sqlSession
if (sqlSession != null){
sqlSession.close();
}
}catch (Exception e) {
e.printStackTrace();
}
}
}
}