Mybatis 学习 (2) mybatis入门


参照 《深入浅出Mybatis技术原理与实战——杨开振》,代码:https://github.com/yangyang5214/mybatis


mybatis 文档:http://www.mybatis.org/mybatis-3/zh/index.html


mybatis组件

1、SqlSessionFactoryBuild(构造器):根据配置信息或者代码来生成SqlSessionFactory
2、SqlSessionFactory:依靠工厂来生成SqlSession(回话)
3、SqlSession:一个既可以发送sql去执行并返回结果,也可以获取Mapper的接口
4、Sql mapper: 一个由Java接口和Xml文件(或注解)构成的,需要给出对应的SQL和映射规则。它负责发sql去执行,并返回结果。

SqlSessionFactoryUtil类:获取sqlSession

public class SqlSessionFactoryUtil {

    private static SqlSessionFactory sqlSessionFactory = null;

    private static final Class CLASS_LOCK = SqlSessionFactoryUtil.class;

    public SqlSessionFactoryUtil() {
    }

    /**
     * 构建sqlSessionFactory
     * @return
     */
    public static SqlSessionFactory initSqlSessionFactory(){
        String resourse = "mybatis-config.xml";
        InputStream inputStream = null;
        try {
            inputStream = Resources.getResourceAsStream(resourse);
        } catch (IOException e) {
            e.printStackTrace();
        }
        synchronized (CLASS_LOCK){
            if (sqlSessionFactory == null){
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            }
        }
        return sqlSessionFactory;
    }

    /**
     * 打开sqlsession
     * @return
     */
    public static SqlSession openSqlSession(){
        if (sqlSessionFactory == null){
            initSqlSessionFactory();
        }
        return sqlSessionFactory.openSession();
    }
}

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>
    <!--别名-->
    <typeAliases>
        <typeAlias alias="userDto" type="com.papa.dto.UserDto"/>
    </typeAliases>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC">
                <property name="autoCommit" value="false"/>
            </transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="admin"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="mapper/user.xml"/>
    </mappers>
</configuration>

user.xml
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.papa.mapper.UserMapper">
    <select id="getUser" resultType="userDto">
        SELECT
            u.age,
            u.pwd,
            u.username
        FROM user u
        WHERE u.id = #{userId}
    </select>


    <insert id="insertUser" parameterType="userDto">
        INSERT INTO
            user (age, pwd, username)
        VALUES
            (#{age}, #{pwd}, #{username})
    </insert>
</mapper>

UserMapper 接口
 
 
public interface UserMapper {

     UserDto getUser(long userId);

     int insertUser(UserDto userDto);
}

userService 调用实现
 
 
public class UserService {

    public static void main(String[] args) {
        SqlSession sqlSession = null;
        sqlSession = SqlSessionFactoryUtil.openSqlSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        UserDto userDto = userMapper.getUser(1);

        UserDto insertUser = new UserDto();
        insertUser.setUsername("123");
        insertUser.setPwd("123");
        insertUser.setAge(12);
        userMapper.insertUser(insertUser);

        sqlSession.commit();
        System.out.println(userDto);
    }
}

项目结构图和结果:
 
 
 
 

猜你喜欢

转载自blog.csdn.net/qq_30009669/article/details/73303263