MyBatis初学者总结-搭建MyBatis环境步骤

Posted robotmujie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis初学者总结-搭建MyBatis环境步骤相关的知识,希望对你有一定的参考价值。

 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。MyBatis 只是一个半自动化的ORM实现,需要我们自己写sql,而不像hibernate那样,直接定义好实体与数据表的映射就行。

  1. 导入jar包:
  2. 技术分享图片注意:画出来的那几个是用来配置batis的,其他的是写DBUtils.java用到的
  3. 创建entity包,在entity包中创建实体类(UserInfo.java
  4.  1 package entity;
     3 public class UserInfo {
     4     private Integer id;
     5     private String name;
     6     private String password;
     7     public Integer getId() {
     8         return id;
     9     }
    10     public void setId(Integer id) {
    11         this.id = id;
    12     }
    13     public String getName() {
    14         return name;
    15     }
    16     public void setName(String name) {
    17         this.name = name;
    18     }
    19     public String getPassword() {
    20         return password;
    21     }
    22     public void setPassword(String password) {
    23         this.password = password;
    24     }
    25     public UserInfo(Integer id, String name, String password) {
    26         super();
    27         this.id = id;
    28         this.name = name;
    29         this.password = password;
    30     }
    31     public UserInfo(String name, String password) {
    32         super();
    33         this.name = name;
    34         this.password = password;
    35     }
    36     public UserInfo() {
    37         super();
    38         // TODO Auto-generated constructor stub
    39     }
    40     @Override
    41     public String toString() {
    42         return "UserInfo [id=" + id + ", name=" + name + ", password=" + password + "]";
    43     }
    47 }
  5. 创建配置文件(batis-config.xml
  6.  1 <configuration>
     2      <environments default="development">
     3         <environment id="development">
     4             <transactionManager type="JDBC" />
     5             <dataSource type="POOLED">
     6                 <property name="driver" value="${driver}" />
     7                 <property name="url" value="${url}" />
     8                 <property name="username" value="${username}" />
     9                 <property name="password" value="${password}" />
    10             </dataSource>
    11         </environment>
    12     </environments>
    13 </configuration>

    注意:<Configuration>标签前面需要配置

  7. 1 <!DOCTYPE configuration
    2 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    3 "http://mybatis.org/dtd/mybatis-3-config.dtd">
    4 <configuration>
  8. 创建属性文件(db.preperties
  9. 1  driver=oracle.jdbc.OracleDriver
    2 url=jdbc:oracle:thin:@localhost:1521:orcl
    3 username=test2
    4 password=123456
  10. 配置文件中(batis-config.xml)加载属性文件(db.preperties为了获取属性文件中定义的值。放置<environments>前面
  11. 1  <properties resource="db.properties">
    2 </properties>
    创建tools包,在tools包中创建工具类(DBUtils.java
  12. 创建tools包,在tools包中创建工具类(DBUtils.java
  13.  1 package tools;
     2 
     3 
     4 import java.io.IOException;
     5 import java.io.Reader;
     6 
     7 import org.apache.ibatis.io.Resources;
     8 import org.apache.ibatis.session.SqlSession;
     9 import org.apache.ibatis.session.SqlSessionFactory;
    10 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    11 
    12 public class DBUtils {
    13     private static SqlSessionFactory factory;
    14     static {
    15         
    16         try {
    17             //读取配置文件
    18             Reader reader = Resources.getResourceAsReader("batis-config.xml");
    19             //创建SqlSessionFactory
    20             factory=new SqlSessionFactoryBuilder().build(reader);
    21         } catch (IOException e) {
    22             e.printStackTrace();
    23         }
    24     }
    25     /**
    26      * 打开session
    27      * @param flag
    28      * @return
    29      */
    30     public static SqlSession getSession(boolean flag) {
    31         return factory.openSession(flag);
    32     }
    33     /**
    34      * 关闭session
    35      * @param session
    36      */
    37     public static void close(SqlSession session) {
    38         if(session!=null) {
    39             session.close();
    40         }
    41     }
    42     /**
    43      * 事务回滚
    44      * @param session
    45      */
    46     public static void rollback(SqlSession session) {
    47         if(session!=null) {
    48             session.rollback();
    49         }
    50     }
    51     /**
    52      * 事务提交
    53      * @param session
    54      */
    55     public static void commit(SqlSession session) {
    56         if(session!=null) {
    57             session.commit();
    58         }
    59     }
    60 
    61 }
  14. 创建映射文件(dao->>UserInfoMapper接口及定义方法->>创建映射文件)(注意:橙色的id名称就是接口中定义的方法名称,两者要一致
  15.  1 <mapper namespace="dao.UserInfoMapper">
     2     <select id="login" parameterType="UserInfo" resultMap="userInfoResult">
     3         select * from userInfo where name=#{username} and password=#{password}
     4     </select>
     5     
     6     <select id="findAll" resultMap="userInfoResult">
     7         select * from userInfo
     8     </select>
     9     
    10     <insert id="insert">
    11         insert into userInfo(name,password) values(#{username},#{password})
    12     </insert>
    13     
    14     <update id="update" parameterType="UserInfo" >
    15         update userInfo set name=#{username},password=#{password} where id=#{id}
    16     </update>
    17     
    18     <delete id="delete" parameterType="int">
    19         delete from userInfo where id=#{id}
    20     </delete>
    21 </mapper>

    // 注意:上面红色的是需要在batis-config.xml定义的别名,若不定义,则应写成:entity.UserInfo
  16. batis-config.xml定义别名:

  17. 1 <typeAliases>
    2     <typeAlias type="entity.UserInfo" alias="UserInfo"/>
    3 </typeAliases> 
    4 
    5 
    6 //(entity.UserInfo:为包名+实体类名 UserInfo:别名)
  18. 上面绿色的,若实体类中的属性数据库的属性没有对应,则需要进行属性映射(放在<mapper>标签下面
  19. 1 <resultMap type="entity.UserInfo" id="userInfoResult">
    2         <id column="id" property="id" />
    3         <result property="username" column="name" />
    4         <result property="password" column="password" />
    5     </resultMap>
  20. 创建测试类(1)采用select方法
  21.  1  @Test
     2     public void testMybatis() {
     3 
     4         SqlSession session = null;
     5         try {
     6             session = DBUtils.getSession(true);
     7             UserInfo userInfo = new UserInfo("TOM", "123456");
     8             UserInfo user = session.selectOne("dao.UserInfoMapper.login", userInfo);
     9             if (user == null) {
    10                 System.out.println("登錄失敗!");
    11             } else {
    12                 System.out.println("登錄成功!");
    13             }
    14         } catch (Exception e) {
    15             e.printStackTrace();
    16         } finally {
    17             if (session != null) {
    18                 DBUtils.close(session);
    19             }
    20         }
    21     }

    采用getMapper()方法

  22.  1  @Test
     2     public void testMapper() {
     3         SqlSession session = null;
     4         try {
     5 
     6             session = DBUtils.getSession(true);
     7             UserInfo userInfo = new UserInfo("TOM", "123456");
     8             UserInfo user = session.getMapper(UserInfoMapper.class).login(userInfo);
     9             if (user == null) {
    10                 System.out.println("登录失败");
    11             } else {
    12                 System.out.println("登录成功");
    13             }
    14         } catch (Exception e) {
    15             e.printStackTrace();
    16         } finally {
    17             if (session != null) {
    18                 DBUtils.close(session);
    19             }
    20         }
    21     }



以上是关于MyBatis初学者总结-搭建MyBatis环境步骤的主要内容,如果未能解决你的问题,请参考以下文章

SSM Spring+SpringMVC+mybatis+maven+mysql环境搭建

MyBatis知识点总结

一顿饭的时间看懂!Mybatis简介与环境搭建,超干货

电商项目实战——SpringBoot+MyBatis搭建基本骨架

MyBatis + SpringMVC 总结

MyBatis与SpringSpringMVC整合