• mybaits入门


    今天咱们分享一些mybait的一些入门知识,希望对大家有帮助

    1. mybatis简介

    Mybatis是Apache的一个Java开源项目,是一个支持动态Sql语句的持久层框架。Mybatis可以将Sql语句配置在XML文件中,避免将Sql语句硬编码在Java类中。与JDBC相比: 1)Mybatis通过参数映射方式,可以将参数灵活的配置在SQL语句中的配置文件中,避免在Java类中配置参数(JDBC) 2)Mybatis通过输出映射机制,将结果集的检索自动映射成相应的Java对象,避免对结果集手工检索(JDBC) 3)Mybatis可以通过Xml配置文件对数据库连接进行管理

    2. mybatis基本构成

    SqlSessionFactoryBuilder: 根据配置信息生成SqlSessionFactory

    SqlSessionFactory: 用于生成SqlSession SqlSession: SqlSession是MyBatis的关键对象,通过这个接口可以操作命令,管理事务等

    SqlMapper:MyBatis的设计组件,有java接口和xml文件构成。需要给出对应的sql映射和映射规则

    mybatis为一款ORM框架,作为对象关系映射模式的框架,主要为了解决面向对象与关系数据库存在互不匹配的现象,只要提供了持久化类与表的映射关系,ORM框架在运行时就能参照映射文件的信息,把对象持久化到数据库中,进行CRUD;

    3.项目中添加mybaits支撑

    1) 使用maven新建一个web工程

     

    点击下一步

     

    2) idea在创建web工程时不会自动创建java,resources,test等目录

     

    3)通过pom.xml添加必要的依赖

    1. <properties>
    2. <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
    3. <maven.compiler.source>1.8maven.compiler.source>
    4. <maven.compiler.target>1.8maven.compiler.target>
    5. properties>
    6. <dependencies>
    7. <dependency>
    8.   <groupId>junitgroupId>
    9.   <artifactId>junitartifactId>
    10.   <version>4.12version>
    11.   <scope>testscope>
    12. dependency>
    13. <dependency>
    14.   <groupId>javax.servletgroupId>
    15.   <artifactId>javax.servlet-apiartifactId>
    16.   <version>4.0.0version>
    17.   <scope>providedscope>
    18. dependency>
    19. <dependency>
    20.   <groupId>org.mybatisgroupId>
    21.   <artifactId>mybatisartifactId>
    22.   <version>3.4.5version>
    23. dependency>
    24. <dependency>
    25.   <groupId>mysqlgroupId>
    26.   <artifactId>mysql-connector-javaartifactId>
    27.   <version>5.1.44version>
    28. dependency>
    29. <dependency>
    30.   <groupId>com.belerwebgroupId>
    31.   <artifactId>pinyin4jartifactId>
    32.   <version>2.5.1version>
    33. dependency>
    34. <dependency>
    35.   <groupId>org.projectlombokgroupId>
    36.   <artifactId>lombokartifactId>
    37.   <version>1.18.24version>
    38.   <scope>providedscope>
    39. dependency>
    40. dependencies>

    4)下载两个插件,用与生成mybatis配置文件的

     

    5)将mybatis核心配置文件(mybatis.cfg.xml),jdbc.properties, log4j.xml考到项目的resources目录下,并修改数据库的连接。

    1. "1.0" encoding="UTF-8"?>
    2. configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
    3. <configuration>
    4. <properties resource="jdbc.properties"/>
    5. <environments default="development">
    6.     <environment id="development">
    7.         <transactionManager type="jdbc"/>
    8.         <dataSource type="POOLED">
    9.             <property name="driver" value="${jdbc.driver}"/>
    10.             <property name="url" value="${jdbc.url}"/>
    11.             <property name="username" value="${jdbc.username}"/>
    12.             <property name="password" value="${jdbc.password}"/>
    13.         dataSource>
    14.     environment>
    15. environments>
    16. <mappers>
    17.     <mapper resource="mapper/Iusermapper.xml"/>
    18. mappers>
    19. configuration>

    5.1)数据库连接

     

    6) 在src/main/resources目录下创建mapper用于方式mybatis的映射文件

    mapper位置

     

    mybatis的映射文件内容

    1. "1.0" encoding="UTF-8" ?>
    2. mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
    3. <mapper namespace="com.zking.mybatis.mapper.Iusermapper">
    4. <select id="listuser" resultType="com.zking.mybatis.model.User">
    5.     select id,name,loginName,pwd,rid from t_oa_user
    6.     <where>
    7.         <if test="name !=null and name !=''">
    8.             and name like concat(#{name} +'%')
    9.         if>
    10.     where>
    11. select>
    12. mapper>

    7).在目录结构中加入一个mapper包,在该包中创建一个Iusermapper接口

     

    注意id要与方法名一致,查询需要返回类型resultType

    7)测试之前要写个帮助类MybatisSessionFactoryUtils

    1. public class MybatisSessionFactoryUtils {
    2. public static SqlSessionFactory sqlSessionFactory;
    3. private static ThreadLocal threadLocal = new ThreadLocal();
    4. static {
    5. try {
    6. InputStream is = MybatisSessionFactoryUtils.class
    7. .getResourceAsStream("/mybatis.cfg.xml");
    8. SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
    9. sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
    10. } catch (Exception e) {
    11. throw new RuntimeException(e);
    12. }
    13. }
    14. private MybatisSessionFactoryUtils() {
    15. }
    16. public static SqlSession openSession() {
    17. SqlSession sqlSession = threadLocal.get();
    18. if (null == sqlSession) {
    19. sqlSession = sqlSessionFactory.openSession();
    20. threadLocal.set(sqlSession);
    21. }
    22. return sqlSession;
    23. }
    24. public static void closeSession() {
    25. SqlSession sqlSession = threadLocal.get();
    26. if (null != sqlSession) {
    27. //threadLocal.set(null);
    28. threadLocal.remove();
    29. sqlSession.close();
    30. }
    31. }

    测试结果

     

    测试包UserserviceimplTest

    1. public class UserserviceimplTest {
    2. private Iuserservice userserviceimpl=new Userserviceimpl();
    3. private SqlSession sqlSession;
    4. @Before
    5. public void setUp() throws Exception {
    6.     sqlSession = MybatisSessionFactoryUtils.openSession();
    7.     Iusermapper mapper = sqlSession.getMapper(Iusermapper.class);
    8.     userserviceimpl.setIusermapper(mapper);
    9. }
    10. @After
    11. public void tearDown() throws Exception {
    12.     sqlSession.commit();
    13. }
    14. @Test
    15. public void listuser(){
    16.     System.out.println(userserviceimpl.listuser(null));
    17. }

  • 相关阅读:
    数据标准化
    计算机网络——网络层(路由选择协议、路由器工作原理、IP多播、虚拟专用网和网络地址转换)
    【C++笔记】第十三篇 面向对象及三大特性
    90%测试工程师都会的用例设计步骤,麻麻再也不用担心我写用例了
    vue自定义一个指令实现el-input-number组件显示千分号,但实际拿到的值是number类型
    无重复字符的最长子串
    理解在Unity中使用多个相机
    testng测试类
    关于RISC-V安全性的全面综述
    LeetCode315 周赛
  • 原文地址:https://blog.csdn.net/Bugxiu_fu/article/details/126502078