Mybatis第一篇【Mybatis入门】

快速入门

步骤:

  1. 导入相关jar包
  • mybatis-3.5.4.jar
  • commons-logging-1.2.jar
  • log4j-1.2.12.jar
  • cglib-2.2.5.jar
  • asm-3.3.1.jar
  • mysql-connector-java-8.0.19.jar
  1. 配置mybatis.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="db.properties"></properties>

    <!-- 给com.example.demo.entity包起别名 -->
    <typeAliases>
        <package name="com.example.demo.entity" />
    </typeAliases>


    <environments default="mysql_environment">
        <environment id="mysql_environment">
            <transactionManager type="jdbc"></transactionManager>
            <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>

        <environment id="oracle_environment">
            <transactionManager type="jdbc"></transactionManager>
            <dataSource type="pooled">
                <property name="driver" value="${oracle.driver}"/>
                <property name="url" value="${oracle.url}"/>
                <property name="username" value="${oracle.username}"/>
                <property name="password" value="${oracle.password}"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <!-- 配置关系映射文件路径 -->
        <mapper resource="Mapping/UserMapping.xml"/>
    </mappers>

</configuration>
  1. 创建数据库配置文件
mysql.driver=com.mysql.cj.jdbc.Driver
mysql.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC
mysql.username=root
mysql.password=12345678
  1. 创建实体类
@Data
public class User implements Serializable {
    private Integer id;
    private String username;
    private String password;
    private Integer age;
    private String sex;

    public User(Integer id, String username, String password, Integer age, String sex) {
        this.id = id;
        this.username = username;
        this.password = password;
        this.age = age;
        this.sex = sex;
    }
}
  1. 编写mapper接口

可以采用注解或xml的方式

public interface UserMapper {
    int insert(User user);

    @Select("select * from user")
    List<User> select();
}
  1. 创建关系映射文件
<?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">

<!-- namespace属性是名称空间,必须唯一 -->
<mapper namespace="com.demo.mapper.UserMapper">

    <!-- resultMap标签:实体类和表的映射
         type属性:表示实体全路径名,可起别名
         id属性:为实体与表的映射取一个任意的唯一的名字
    -->
    <resultMap type="User" id="UserMap">
        <!-- id标签:映射主键属性
             result标签:映射非主键属性
             property属性:实体的属性名
             column属性:表的字段名
        -->
        <id property="id" column="id"/>
        <result property="username" column="username"/>
        <result property="password" column="password"/>
        <result property="age" column="age"/>
        <result property="sex" column="sex"/>
    </resultMap>

    <insert id="insert" parameterType="User">
        insert into user (id,username,password,age,sex) values (#{id},#{username},#{password},#{age},#{sex})
    </insert>

</mapper>
  1. 创建Mybatis工具类
public class MybatisUtil {
    private static ThreadLocal<SqlSession> threadLocal = new ThreadLocal<>();
    private static SqlSessionFactory sqlSessionFactory;

    static {
        try {
            //加载位于src/mybatis.xml配置文件
            Reader resourceAsReader = Resources.getResourceAsReader("mybatis.xml");
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsReader);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private MybatisUtil(){}
    //获取sqlSession
    public static SqlSession getSqlSession() {
        SqlSession sqlSession = threadLocal.get();
        if (sqlSession == null)
            sqlSession=sqlSessionFactory.openSession();
            threadLocal.set(sqlSession);
        return sqlSession;
    }
    //关闭sqlSession
    public static void close() {
        SqlSession sqlSession = threadLocal.get();
        if (sqlSession != null)
            sqlSession.close();
        //分开当前线程与SqlSession对象的关系,目的是让GC尽早回收
        threadLocal.remove();
    }
}
  1. 测试
    public void test(){
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> select = mapper.select();
        //开启自动提交
        sqlSession.commit();
        for (User user : select) {
            System.out.println(user);
        }
        sqlSession.close();
        MybatisUtil.close();
    }

结果:

测试结果

猜你喜欢

转载自www.cnblogs.com/kwdlh/p/12683206.html