MyBatis(一)mybatis简易搭建

 mybatis(基础及其搭建)

宣示:该小说及该分类中的内容均依据正在开发的类型和一本参考书(深切浅出MyBatis技术原理与实战
   by 杨开振)

一、mybatis主题组件(简要介绍)

       
SqlSessionFactoryBuilder(构造器):依照部署音讯或代码生成SqlSessionFactory(工厂接口);

        SqlSessionFactory:依靠工厂生成SqlSession(会话);

       
SqlSession:是一个既可以发送SQL去实践并回到结果,也足以拿走Mapper的接口;重要用途:1.取得映射器,2.一贯通过命名信息举行SQL;

       
SQLMapper:由一个Java接口和XML文件(或注明)构成,需提交对应的SQL和照耀规则。它承担发送SQL去履行,并回到结果。

  MyBatis 1

二、构建SqlSessionFactory(先河搭建)

        有二种构建格局:1.xml布局;2.代码办法

        提出使用XML形式:避免再度编译代码,也利于配置人口修改

粗略XML配置:(部分可以配置,按需要展开配置)

  mybatis-config.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE configuration
 3   PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4   "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <configuration><!-- org.apache.ibatis.session.Configuration -->
 6     <!-- 属性 -->
 7     <properties resource="jdbc.properties"/>
 8      <settings/> <!--设置 -->
 9     <!-- 类型命名  定义别名-->
10     <typeAliases>
11         <typeAlias alias="role" type="com.standard.model.Role"/>
12     </typeAliases>
13      <typeHandlers/><!--类型处理器 -->
14     <objectFactory/><!-- 对象工厂 -->
15      <plugins/><!--插件 -->
16     <environments default="development"><!-- 配置环境 -->
17         <environment id="development"><!-- 环境变量 -->
18             <transactionManager type="JDBC"><!--采用JDBC 事务管理器 -->
19                 <property name="autoCommit" value="false"/>
20             </transactionManager>
21             <!-- 数据源 -->
22             <dataSource type="POOLED">
23                 <property name="driver" value="${driver}"/>
24                 <property name="url" value="${url}"/>
25                 <property name="username" value="${username}"/>
26                 <property name="password" value="${password}"/>
27             </dataSource>
28         </environment>
29     </environments>
30      <databaseIdProvider/><!--数据库厂商标识 -->
31     <mappers><!-- 映射器 -->
32         <mapper resource="com/standard/dao/UserMapper.xml"/>
33     </mappers>
34 </configuration>

注意:

<!DOCTYPE configuration
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">

  下边配置映射器时,这一个地点有分别

  database在jdbc.properties中读取:

1 driver=com.mysql.jdbc.Driver
2 url=jdbc:mysql://localhost:3306/mybatis
3 username=root
4 password=root

       
注:mybatis的分析程序会将mybatis-config.xml文件配置的音讯分析到Configuration类对象里面,然后采取SqlSessionFactoryBuilder读取这多少个目的为咱们创制SqlSessionFactory。

三、创建SqlSession

        以下是包装好的工具类,打个util类直接运用

 1 public class SqlSessionFactoryUtil {
 2     
 3     //类线程锁
 4     private static final Class CLASS_LOCK =SqlSessionFactoryUtil.class;
 5     //私有化构造参数
 6     //防止使用者使用new的方式创建多个对象
 7     private SqlSessionFactoryUtil(){    }
 8 
 9     //构建SqlSessionFactory   实现单例
10     static SqlSessionFactory sqlSessionFactory=null;
11     
12     public static SqlSessionFactory initSqlSessionFactory(){
13         InputStream iStream = null;
14         //sqlSessionFactory对象
15         SqlSession sqlSession=null;
16         
17         //读入配置流文件  加载核心配置文件
18         
19         try{
20             iStream=Resources.getResourceAsStream("mybatis-config.xml");
21         }catch(IOException e){
22             // TODO Auto-generated catch block
23             System.out.println("--"+e);
24             e.printStackTrace();
25         }
26 
27         synchronized (CLASS_LOCK) {//避免在多线程环境中,多次初始化造成对象的不唯一
28             if(sqlSessionFactory==null){
29                 //获取SQLSessionFactory
30                 sqlSessionFactory=new SqlSessionFactoryBuilder().build(iStream);
31             }
32 
33         }
34         return sqlSessionFactory;
35     }
36     
37     //打开SqlSession
38     public static SqlSession openSqlSession(){
39         if(sqlSessionFactory==null){
40             initSqlSessionFactory();
41         }
42         return sqlSessionFactory.openSession();
43     }
44 }

四、映射器(接口+XML注解)

        实现情势有二种:1.透过XML文件模式贯彻(推荐使用)

          
2.由此代码情势贯彻:在Configuration里面注册Mapper接口(需要写入Java申明),较为复杂。

  先交由接口:UserMapper.java(xml情势)

1 public interface UserMapper {
2     int insert(User record);
3     List<User> select(); 
4 }

  然后给出映射文件:UserMapper.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 3 <mapper namespace="com.standard.dao.UserMapper">
 4      
 5    <resultMap id="BaseResultMap" type="com.standard.model.User">
 6      <id column="ID" jdbcType="INTEGER" property="id" />
 7      <result column="ACCOUNT" jdbcType="VARCHAR" property="account" />
 8      <result column="NAME" jdbcType="VARCHAR" property="name" />
 9      <result column="PASSWORD" jdbcType="VARCHAR" property="password" />
10      <result column="ROLE_ID" jdbcType="INTEGER" property="roleId" /> 
11      
12   </resultMap>
13    <sql id="Base_Column_List">
14      ID, ACCOUNT, NAME, PASSWORD, ROLE_ID
15    </sql>
16      
17    <select id="select" resultMap="BaseResultMap">
18      select 
19      <include refid="Base_Column_List"/>
20      from STANDARD_USER
21    </select>
22    

注意:

 <?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">

  可以同下面提到的mybatis-config.xml配置比较此部分内容,对小白精晓mybatis或许会有帮带

 

五、最终测试一下

  先出示一下POJO: User.java

public class User{
    private Integer id;

    private String account;

    private String name;

    private String password;

    private Integer roleId;

    private Role role;

    //get set 方法省略...

  然后写个测试类

public class UserTest {

    static SqlSession sqlSession=null;
    static UserMapper userMapper;
    public static void main(String[] args ) {
        try{
            sqlSession=SqlSessionFactoryUtil.openSqlSession();
            userMapper=sqlSession.getMapper(UserMapper.class);
            UserTest userTest=new UserTest();
            //插入
            int i =userTest.insert();
            System.out.println(i);
            sqlSession2.commit();

        }catch(Exception e){
            System.err.println("---"+e.getMessage());
            sqlSession.rollback();
        }finally{
            if(sqlSession!=null){
                sqlSession.close();
            }
        }
    }
    public int insert(){
        User user=new User();
        user.setId(9);
        user.setName("小白");
        user.setAccount("admin");
        user.setPassword("123456");
        user.setRoleId(1);
        int i = userMapper.insert(user);
        return i;
    }
}

        最终就完了了一回插入数据库操作。

        小白刚刚启动,欢迎吐槽~~

网站地图xml地图