mybatis

 

  下载:https://github.com/mybatis/mybatis-3/releases

  API:https://mybatis.org/mybatis-3/zh/getting-started.html

 

  持久层框架

  (Spring的JdbcTemplate、Apache的DBUtils是工具类,是对JDBC的简单封装)

  mybatis内部封装了jdbc,使用mybatis只需要关注sql语句本身,不需要关注加载驱动、创建连接等过程。使用ORM思想实现对结果集的封装。

 

  ORM:object relational mapping 对象关系映射

 

1. 使用

  maven项目

  1.1 添加jar

<dependency>
    <groupId>org.mybatisgroupId>
    <artifactId>mybatisartifactId>
    <version>3.5.4version>
    <scope>compilescope>
dependency>

 

  1.2 配置

(1)数据源配置

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="mysql">
        
        <environment id="mysql">
            
            <transactionManager type="JDBC">transactionManager>
            
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/contacts?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8"/>
                <property name="username" value="root"/>
                <property name="password" value="xxx"/>
            dataSource>
        environment>
    environments>
    
    <mappers>
        <mapper resource="com/xt/dao/UserDao.xml">mapper>
    mappers>
configuration>

 

(2)dao接口的映射文件

  UserDao.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="com.xt.dao.UserDao">
    
    <select id="findAll" resultType="com.xt.domain.User">
        select * from user
    select>
mapper>

  文件名与接口名相同;

  映射文件在resource目录下与dao接口同样的目录结构下

  namespace为接口位置

  id为方法名

  resultType为相对应的数据模型类

 

  1.3 简单例子如下

  数据模型为User:

public class User implements Serializable {
    //成员变量
    xxx
    //getter、setter方法
    xxx
}

  接口为UserDao:在接口映射配置文件里写了sql语句,以及标定了返回值类型,于是不用自己写dao的实现类了

public interface UserDao {

    /*查找所有user*/
    List findAll();
}

 

  主方法:

//1.读取配置文件
InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
//2.创建SqlSessionFactory(通过其构建工厂对象)
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
//3.使用工厂创建SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//4.创建dao接口的代理对象
UserDao dao = sqlSession.getMapper(UserDao.class);
//5.通过代理对象调用方法
List list = dao.findAll();

for(User user:list) {
    System.out.println(user.toString());
}

//6.关闭
sqlSession.close();
is.close();

 

 

2. 使用注解的方式

  删掉接口映射文件 UserDao.xml

  修改SqlMapConfig.xml文件:修改mapper


<mapper class="com.xt.dao.UserDao">mapper>

  在接口上添加注解:

  UserDao.java

public interface UserDao {

    /*查找所有user*/
    @Select("select * from user")
    List<User> findAll();
}

 

 

3. 其它问题

  查询用select标签;插入数据用insert标签;删除用delete标签

  在mapper代理对象调用完方法后,需要执行  sqlSession.commit()  提交事务,数据才能进到数据库,否则数据可能会回滚

 

  

 

你可能感兴趣的:(mybatis)