• java学习day35-三大框架-MyBatis(二)


    MyBatis快速入门案例

    1. 准备数据库

    创建数据库db并指定utf8编码, 在数据库中创建表emp, 插入一些数据

    -- 1、创建数据库
    create database if not exists db charset utf8;
    use db; -- 选择数据库
    -- 2、删除emp表(如果存在)
    drop table if exists emp;
    -- 3、在 yonghedb 库中创建 emp 表
    create table emp(
        id int primary key auto_increment,
        name varchar(50),
        job varchar(50),
        salary double
    );
    -- 4、往 emp 表中, 插入若干条记录
    insert into emp values(null, '张三', '程序员', 3300);
    insert into emp values(null, '李四', '程序员', 2800);
    insert into emp values(null, '王五', '程序员鼓励师', 2700);
    

    2. 创建maven项目, 引入依赖

    <dependencies>
        <!-- junit单元测试 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.9</version>
        </dependency>
        <!-- mysql驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.32</version>
        </dependency>
        <!-- mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.2.8</version>
        </dependency>
    </dependencies>
    

    3. 创建Emp实体类

    在src/main/java下创建com.test.pojo.Emp

    用来接收数据库返回的数据, 属性名最好和数据库中的字段名一致

    public class Emp {
    	
    	/*
    	 * 声明id, name, job, salary四个属性, 分别用于封装
    	 * emp表中的id, name, job, salary
    	 * 注意: 如果能让Emp类中的变量和emp表中的列名保持一致的化
    	 * 尽量保持一致(在不违反Java命名规范的前提下)
    	 */
    	private Integer id;
    	private String name;
    	private String job;
    	private Double salary;
    	
    	// getter, setter, toString()...
    }
    

    4. 创建配置文件

    4.1 mybatis-config.xml

    在src/main/resources目录下,创建mybatis-config.xml文件(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">
        
    <!-- MyBatis的全局配置文件 -->
    <configuration >
        <!-- 1.配置环境,可配置多个环境(比如:develop开发、test测试) -->
        <environments default="develop">
            <environment id="develop">
                
                <!-- 1.1.配置事务管理方式:JDBC/MANAGED
                JDBC:将事务交给JDBC管理(推荐)
                MANAGED:自己管理事务
                  -->
                <transactionManager type="JDBC"></transactionManager>
                
                <!-- 1.2.配置数据源,即连接池 JNDI/POOLED/UNPOOLED
                    JNDI:已过时
                    POOLED:使用连接池(推荐)
                    UNPOOLED:不使用连接池
                 -->
                <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://localhost:3306/db?characterEncoding=utf-8"/>
                    <property name="username" value="root"/>
                    <property name="password" value="123456"/>
                </dataSource>
            </environment>
        </environments>
        
        <!-- 2.导入Mapper配置文件,如果mapper文件有多个,可以通过多个mapper标签导入 -->
        <mappers>
            <mapper resource="EmpMapper.xml"/>
        </mappers>
    </configuration>
    

    4.2 EmpMapper.xml

    在src/main/resources目录下,创建EmpMapper.xml文件 (实体类的映射文件)

    <?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">
    <!-- namespace值表示当前这个mapper名字
    	框架底层会根据namespace的值来定位当前这个mapper文件
     -->
    <mapper namespace="EmpMapper">
    	<!-- 在mapper根标签内部可以添加很多SQL标签
    		select, insert, delete, update
    	 -->
    	 <!-- 查询所有emp表中的所有员工信息
    	 	resulType属性: 用于只当什么类型来封装SQL语句查询而结果
    	 	如果查询员工信息, 可以指定员工对象来进行封装, 因此
    	 	resultType需要指定Emp类的全限定类名
    	  -->
    	<select id="findAll" resultType="com.tedu.pojo.Emp">
    		select * from emp;
    	</select>
    	
    </mapper>
    

    5. 创建测试类进行测试

    在src/main/java下创建测试类com.test.TestMyBatis

    public class TestMyBatis {
    	/**
    	 * 联系1: 查询emp表中的所有员工信息
    	 * @throws IOException 
    	 */
    	@Test
    	public void testFindAll() throws IOException {
    		// 1. 读取mybatis的核心配置文件[mybatis-config.xml]
    		InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
    		// 2. 通过获取SqlSessionFactory工厂对象
    		SqlSessionFactory fac = new SqlSessionFactoryBuilder().build(in);
    		// 3. 后去SqlSession对象(打开与数据库的连接) true: 表示自动提交, 默认是false即手动提交
    		SqlSession session = fac.openSession(true);
    		// 4. 执行SQL语句, 并返回执行结果
    		List<Emp> emps = session.selectList("EmpMapper.findAll");
    		// 5. 输出结果
    		for (Emp emp : emps) {
    			System.out.println(emp);
    		}
    	}
    }
    

    6. 输出结果

    Emp [id=1, name=张三, job=程序员, salary=3300.0]
    Emp [id=2, name=李四, job=程序员, salary=2800.0]
    Emp [id=3, name=王五, job=程序员鼓励师, salary=2700.0]
    
  • 相关阅读:
    [CF707D]Persistent Bookcase_主席树_bitset
    [CF798D]Mike and distribution_贪心
    [LuoguP2164][SHOI2007]交通网络_拓扑排序_概率期望
    [LuoguP3064][USACO12DEC]伊斯坦布尔的帮派Gangs of Istanbull(加强版)_线段树_贪心
    [CF306C]White, Black and White Again_排列组合
    [LuoguP2167][SDOI2009]Bill的挑战_容斥原理/状压dp
    [LuoguP2163][SHOI2007]园丁的烦恼_CDQ分治
    正则字符串插入字符
    [react]
    react 预览pdf 转换
  • 原文地址:https://www.cnblogs.com/liqbk/p/13159329.html
Copyright © 2020-2023  润新知