MyBatis的创建和学习

MyBatis的创建和学习,第1张

MyBatis 1、特性
  • MyBatis 是一个基于java的持久层框架
    • 支持定制化SQL,储存过程以及高级映射
    • 避免大部分jdbc代码和手动设置参数以及获取结果集
    • 使用简单的xml或注解用于配置和原始映射,将接口或java对象映射成数据库中的记录(半自动)
  • *** 作简便,开发效率高
    • 将SQL和java编码分开,功能便捷清晰
原生jdbc的问题:
		数据库连接,使用要创建,不使用需要立即释放
		对数据库频繁的连接开启和关闭,造成数据库资源浪费
		将SQL语句编码到java代码,要修改SQL需要重新编译java代码,不利于系统维护
		遍历result结果集时,需要手动的讲数据映射成java对象
2、搭建 1.创建maven工程,引入依赖

最先起码,有个数据库表,并创建实体类,可在idea中安装MybatisX插件,可实现在xml映射文件和接口方法间相互跳转,提高编程效率

<dependencies>
   
   <dependency>
   		<groupId>org.mybatisgroupId>
   		<artifactId>mybatisartifactId>
   		<version>3.5.7version>
   dependency>
   
   <dependency>
   		<groupId>junitgroupId>
   		<artifactId>junitartifactId>
   		<version>4.12version>
   		<scope>testscope>
   dependency>
   
   <dependency>
   		<groupId>mysqlgroupId>
   		<artifactId>mysql-connector-javaartifactId>
   	<version>8.0.26version>
   	
   	dependency>
   	
   	  <dependency>
           <groupId>log4jgroupId>
           <artifactId>log4jartifactId>
           <version>1.2.17version>
       dependency>
   	
dependencies>
2、创建MyBatis的核心配置文件
  • 一般是mybatis-config.xml,只是建议,可以改成任意名,放在src/main/resources目录下
  • 可去官网查看
  
DOCTYPE configuration  
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  
"http://mybatis.org/dtd/mybatis-3-config.dtd">  
<configuration>  
	  
	<environments default="development">  
		<environment id="development">  
			<transactionManager type="JDBC"/>  
			<dataSource type="POOLED">  
				<property name="driver" value="com.mysql.cj.jdbc.Driver"/>  
				<property name="url" value="jdbc:mysql://localhost:3306/MyBatis"/>  
				<property name="username" value="root"/>  
				<property name="password" value="123456"/>  
			dataSource>  
		environment>  
	environments>  
	  
	<mappers>  
		<mapper resource="mappers/UserMapper.xml"/>  
	mappers>  
configuration>

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

    
    <properties resource="jdbc.properties"/>
    <typeAliases>
        
        <typeAlias type="com.sanxia.mybatis.pojo.User"
                   alias="User">typeAlias>
        
        <package name="com.sanxia.mybatis.pojo.User"/>
    typeAliases>
    

    <environments default="development">
        <environment id="development">

            <transactionManager type="JDBC"/>

            <dataSource type="POOLED">

                <property name="driver" value="${jdbc.driver}"/>

                <property name="url" value="${jdbc.url}"/>

                <property name="username" value="${jdbc.username}"/>

                <property name="password" value="${jdbc.password}"/>
            dataSource>
        environment>
        <environment id="test">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/web"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            dataSource>
        environment>
    environments>
    
    <mappers>

        
        <package name="com.sanxia.mybatis.mapper"/>
    mappers>
configuration>
3、创建mapper接口,及一个SQL语句
  • mapper接口相当于以前的dao,但仅仅是接口,不需要提供实现类
package com.atguigu.mybatis.mapper;  
  
public interface UserMapper {  
	/**  
	* 添加用户信息  
	*/  
	int insertUser();  
}
4、创建MyBatis的映射文件
  • xxxMapper.xml 文件
  
DOCTYPE mapper  
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"  
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">  
<mapper namespace="com.atguigu.mybatis.mapper.UserMapper">  
 
	  
	<insert id="insertUser">  
		insert into t_user values(null,'张三','123',23,'女')  
	insert>  
mapper>
5、测试
  • 编写一个测试类,来验证程序可行性
package com.sanxia.mybatis.test;

import com.sanxia.mybatis.mapper.UserMapper;
import com.sanxia.mybatis.pojo.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class MyBatisTest {
    /**
     * SqlSession默认不自动提交事务,若需要自动提交事务
     * 可以使用SqlSessionFactory.openSession(true);
     *
     */
    @Test
    public void testMyBatis() throws IOException {
        //加载核心配置文件
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        //获取SQLSessionFactoryBuilder
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        //获取SQLSessionFactory
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
        //获取sqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        //获取mapper接口对象
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);


        //test
        int result = mapper.insertUser();

        //提交事务
//        sqlSession.commit();
        System.out.println(result);

    }
使用resultMap,输出映射
  • 使用resultType进行输出映射,只有查询出来的列名和pojo中的属性一致,才能成功,查询结果只有一行一列
  • 如果查询出来的列名和属性名不一致,通过定义一个resultMap对列名和属性名之间做一个映射关系
    • 定义resultMap
    • 使用resultMap,在映射配置文件中使用resultMap定义 字段 和 属性 的映射关系
<resultMap id="brandResultMap" type="brand">
    
    <result column="brand_name" property="brandName"/>
    <result column="company_name" property="companyName"/>
resultMap>




了解跟多,请自行去官方了解——MyBatis中文官方网站

mybatis的增删改查

我的Mybatis代码

如果嫌这些太麻烦了,还是去学学mybatis plus

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/736296.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-04-28
下一篇2022-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存