Spring Boot学习笔记5-MyBatis--实践练习(持续更新)

MyBatis–实践练习1

最简单的一个数据库访问demo

环境配置

在项目pom文件中增加mybatis和mysql的dependency依赖:

<dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.4</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.48</version>
        </dependency>
        
		<dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

创建数据表

CREATE TABLE `user` (
	`id` int(11) NOT NULL auto_increment,
	`username` varchar(32) NOT NULL COMMENT '用户名称',
	`birthday` datetime default NULL COMMENT '生日',
	`sex` char(1) default NULL COMMENT '性别',
	`address` varchar(256) default NULL COMMENT '地址',
	PRIMARY KEY (`id`)
	) ENGINE=InnoDB DEFAULT CHARSET=utf8;

插入数据

insert into `user` (`id`, `username`, `birthday`, `sex`, `address`) values (12, '小明', '2020-02-02 12:23:34', '男', '北京');
insert into `user` (`id`, `username`, `birthday`, `sex`, `address`) values (34, '小红', '1990-12-22 02:23:12', '女', '上海');
insert into `user` (`id`, `username`, `birthday`, `sex`, `address`) values (56, '小黄', '1876-08-21 12:23:16', '男', '广州');
insert into `user` (`id`, `username`, `birthday`, `sex`, `address`) values (78, '小蓝', '1777-04-05 21:22:56', '女', '深圳');
insert into `user` (`id`, `username`, `birthday`, `sex`, `address`) values (90, '小明绿', '2100-06-30 09:23:42', '男', '汉洲');

代码编写

代码目录

在这里插入图片描述

User类 User.java

User类对应数据表user,类属性与表中字段一一对应:

package com.szc.domain;

import java.io.Serializable;
import java.util.Date;

public class User implements Serializable {
    private Integer age;
    private String username;
    private Date birthday;
    private String sex;
    private String address;

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "User{" +
                "age=" + age +
                ", username='" + username + '\'' +
                ", birthday=" + birthday +
                ", sex='" + sex + '\'' +
                ", address='" + address + '\'' +
                '}';
    }
}

IUserDao接口类 IUserDao.java

作为Dao层的请求接口:

package com.szc.dao;

import com.szc.domain.User;

import java.util.List;

public interface IUserDao {

    /**
     * 查找所有数据操作
     * @return
     */
    List<User> findAll();
}

mapper映射文件 IUserDao.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">

<mapper namespace="com.szc.dao.IUserDao">

    <!-- 配置查询所有 -->
    <select id="findAll" resultType="com.szc.domain.User">
        select * from user;
    </select>
</mapper>

MyBatis配置类

mybatis配置文件存放在resource模块下与Dao接口一直的包路径下。比如本例的Dao包名为com.szc.dao,则mybatis配置文件SqlMyConfig.xml存放在resource模块下的com.szc.dao包路径下:

<?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>
    <!-- 配置环境 -->
    <environments default="mysql">
        <!-- 配置mysql环境 -->
        <environment id="mysql">
            <!-- 配置事务的类型 -->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 配置数据源(连接池) -->
            <dataSource type="POOLED">
                <!-- 配置连接数据库的基本信息 -->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/easy_mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>

        </environment>
    </environments>

    <!-- 指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件 -->
    <mappers>
        <mapper resource="com/szc/dao/IUserDao.xml"/>
    </mappers>
</configuration>

测试类

package com.szc.test;

import com.szc.dao.IUserDao;
import com.szc.domain.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 java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class MyBatisTest {

    /**
     * 入门案例
     * @param args
     */
    public static void main(String[] args) throws IOException {

        //1.读取配置文件
        InputStream in = Resources.getResourceAsStream("SqlMyConfig.xml");
        //2.创建SqlSessionFactory工厂
        SqlSessionFactoryBuilder buider = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = buider.build(in);
        //3.使用工厂生产SqlSession对象
        SqlSession session = factory.openSession();
        //4.使用SqlSession创建Dao接口的代理对象
        IUserDao userDao = session.getMapper(IUserDao.class);
        //5.使用代理对象执行方法
        List<User> users = userDao.findAll();
        for(User user: users){
            System.out.println(user);
        }
        //6.释放资源
        session.close();
        in.close();

    }
}

运行结果:

Wed Apr 22 22:44:24 HKT 2020 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
User{age=null, username='小明', birthday=Sun Feb 02 12:23:34 HKT 2020, sex='男', address='北京'}
User{age=null, username='小红', birthday=Sat Dec 22 02:23:12 HKT 1990, sex='女', address='上海'}
User{age=null, username='小黄', birthday=Mon Aug 21 12:23:16 HKT 1876, sex='男', address='广州'}
User{age=null, username='小蓝', birthday=Sat Apr 05 21:22:56 HKT 1777, sex='女', address='深圳'}
User{age=null, username='小明绿', birthday=Wed Jun 30 09:23:42 HKT 2100, sex='男', address='汉洲'}

Process finished with exit code 0

MyBatis–实践练习2

实践练习2是基于实践练习1的mybatis注解使用形式。

把实践练习1的IUserDao.xml移除,在dao接口的方法上使用@Select注解,并且指定SQL语句。同时,需要在SqlMyConfig.xml中的mapper配置时,使用class属性指定dao接口。

IUserDao类:

package com.szc.dao;

import com.szc.domain.User;
import org.apache.ibatis.annotations.Select;

import java.util.List;

public interface IUserDao {

    /**
     * 查找所有数据操作
     * @return
     */
    @Select("select * from user")
    List<User> findAll();
}

SqlMyConfig.xml:

<?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>
    <!-- 配置环境 -->
    <environments default="mysql">
        <!-- 配置mysql环境 -->
        <environment id="mysql">
            <!-- 配置事务的类型 -->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 配置数据源(连接池) -->
            <dataSource type="POOLED">
                <!-- 配置连接数据库的基本信息 -->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/easy_mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>

        </environment>
    </environments>

    <!-- 指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件
        如果是用注解来配置的话,此处应该使用class属性指定被注解的dao全限定类名
        -->
    <mappers>
        <mapper class="com.szc.dao.IUserDao"/>
    </mappers>
</configuration>

运行结果和实践练习1一样。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值