• MyBatis入门教程(基于Mybatis3.2)


    MyBatis和Hibernate一样都是基于ORM的关系型数据库框架

    ORM工具的基本思想:

    1.从配置文件(通常是XML配置文件中)得到 sessionfactory. 2. sessionfactory 产生 session 3. session中完成对数据的增删改查和事务提交等. 4. 在用完之后关闭session

    5.java对象和数据库之间有做mapping的配置文件,也通常是xml文件。

    MyBatis 是支持 普通 SQL 查询 , 存储过程 和 高级映射 的优秀持久框架。MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索封装。

    本文就一个demo的形式,讲诉MyBatis的数据库操作过程,新建一个web项目,项目结构如图:

    我们需要准备mybatis3.2.jar和mysql的jar,日志输出的jar根据自己项目的需要

    新建数据库,数据表是users,设置id为主键,同时自动增长

    新建一个资源文件config

    编写数据库配置信息文件db.properties:

    driver=com.mysql.jdbc.Driver
    url=jdbc:mysql://localhost:3306/db_mysql?useUnicode=true&characterEncoding=utf-8
    username=root
    password=111
    

    编写pojo类:

    package com.mybatis.entity;
    
    public class User {
    
    	/*
    	 * ID
    	 */
    	private int id;
    	
    	/*
    	 * 用户姓名 
    	 */
    	private String name;
    	
    	/*
    	 * age
    	 */
    	private int age;
    
    	public int getId() {
    		return id;
    	}
    
    	public void setId(int id) {
    		this.id = id;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public int getAge() {
    		return age;
    	}
    
    	public void setAge(int age) {
    		this.age = age;
    	}
    	
    	@Override
    	public String toString() {
    		return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
    	}
    	
    }
    

    编写pojo类对应的mapper文件:

    <?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,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的 
    -->
    <mapper namespace="com.mybatis.mapper.userMapper">
    
    <!-- 
    	在select标签中编写查询的SQL语句, 设置select标签的id属性为findById,id属性值必须是唯一的,不能够重复
        parameterType可以在MyBatis的配置文件里设置,也可以直接用包名+类名
     -->
     
     
    	<insert id="save" parameterType="User">
    	insert into users(id,name,age) value(#{name},#{age})
    	</insert>
    	<update id="update" parameterType="User">
    	update users set name=#{name},age=#{age} where id=#{id}
    	</update>
    	<delete id="delete" parameterType="int">
    	delete from users where id=#{id}
    	</delete>
    	<select id="findById" parameterType="int" resultType="User">
    	select * from users where id=#{id}
    	</select>
    	<select id="findAll" resultType="User">
    	select * from users
    	</select>
    </mapper>

    然后,在编写MyBatis的配置文件:

    <?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>
    	
    	<!-- 数据库配置文件  --> 
        <properties resource="db.properties" />  
         
       <!-- 实体类,简称 -设置别名 -->
    	<typeAliases>
    		<typeAlias alias="User" type="com.mybatis.entity.User" />
    	</typeAliases>
    	
    	<!-- 读取db.properties里的数据,进行数据库配置 -->
    	<environments default="development">
    		<environment id="development">
    			<transactionManager type="JDBC" />
    			<dataSource type="POOLED">
    				<property name="driver" value="${driver}"/>
    	            <property name="url" value="${url}" />
    	            <property name="username" value="${username}"/>
    	            <property name="password" value="${password}"/>
    			</dataSource>
    		</environment>
    	</environments>
    	
    	<!-- 注册userMapper.xml文件 -->
    	<mappers>
    		<mapper resource="com/mybatis/mapper/userMapper.xml"/>
    	</mappers>
    	
    </configuration>
    

    测试类:

    import java.io.Reader;
    
    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 com.mybatis.entity.User;
    
    
    public class Test {
    
    	public static void main(String[] args) {
    		String resource = "mybatis-config.xml";
    		try{
    			//加载Mybatis的配置文件
    			Reader reader = Resources.getResourceAsReader(resource);
    			//构建sqlSession的工厂
    	        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
    			//创建可以执行sql的SqlSession
    	        SqlSession session = sessionFactory.openSession();
    			//映射sql的标志字符串
    	        String statement = "com.mybatis.mapper.userMapper.findById";
    	        //执行查询返回id为1的User对象
    			User user = session.selectOne(statement,1);
    			System.out.println(user);
    			
    		}catch (Exception e) {
    			e.printStackTrace();
    		}
    	}
    }
    

    然后,可以编写日志文件,进行日志输出

    log4j.propertiesuFF0C
    log4j.rootLogger=DEBUG, Console
    #Console
    log4j.appender.Console=org.apache.log4j.ConsoleAppender
    log4j.appender.Console.layout=org.apache.log4j.PatternLayout
    log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
    log4j.logger.java.sql.ResultSet=INFO
    log4j.logger.org.apache=INFO
    log4j.logger.java.sql.Connection=DEBUG
    log4j.logger.java.sql.Statement=DEBUG
    log4j.logger.java.sql.PreparedStatement=DEBUG

    运行测试类,可以输出,说明我们的mybatis搭建好了,可以进行数据库操作

    需要注意的:

    为了统一编码,建议新建数据库时设置成utf-8的

    还有测试时,那个id一定要和userMapper.xml里的id对应,mybatis是根据这个id调用sql函数的哦

    配置mybatis文件时,一定要注意顺序,一般都是先配置别、数据库配置、然后mapper文件注册的

     
  • 相关阅读:
    怎么控制 echarts提示框浮层的内容
    控制echarts 柱状图啊的柱条的宽度
    如何控制echartsY轴颠倒
    mac mysql nginx
    input textarea 获取焦点挡住输入法 解决办法
    react 记录
    微信内自动播放audio
    react router
    mysql 记录
    express 插件
  • 原文地址:https://www.cnblogs.com/mzq123/p/5450632.html
Copyright © 2020-2023  润新知