SSM框架系列学习总结4之Mybatis入门程序与JDBC

JDBC总结

数据库连接.png
数据库连接的第二个参数: JDBC URL
JDBC URL.jpeg
如果是本机, 可直接简写为
jdbc:mysql:///cloud_study

JDBC常用API

常用API.jpeg

连接步骤.jpeg

ResultSet:
ResultSet.jpeg
get方法.jpeg

JDBC的游标

游标.png
开启游标:
开启游标.jpeg
游标使用.jpeg

字符集设置避免中文乱码

字符集.jpeg

命令行输入:
show variables like '%character%';
variables .png
show create table goods;
表.png
所有设置编码对象.png
URL设置.jpeg

解决SQL注入

占位符.jpeg
PreparedStatement.png

注意事项

权限管理.jpeg
数据库错误.jpeg
密文存储.jpeg

Mybatis入门程序

ORM.png
ORM.png
对应关系.jpeg

引入Mybatis

Mybatis是作用在持久层的轻量级的框架,该框架要求程序员将大部分的精力放在sql语句的编写上面, 是一种半自动的sql编写方式。主要适用于需求变化比较多的项目。

为什么要用框架:
1.在jdbc中很多地方有用到硬编码,比如sql语句 ,在mybatis中将sql语句编写在xml文件中
2.在jdbc中对于映射关系处理的不好。对于查询 jdbc返回的就是一个ResultSet对象,mybatis提供了多种映射关系,可以直接获得我们想要的各种类型的结果
3.对于dao层编写, 必须在dao层的实现类编写jdbc代码, 但是mybatis提供了一种方式叫做Mapper代理开发模式,在这种模式下, 对于dao层 我们只需要编写接口, 不需要编写实现类!

导入jar包:
jar包.png
整个项目结构:
结构.png

整个配置文件的配置:
创建mybatis的全局配置文件SqlMapConfig.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">

<configuration>
    <!-- 在控制台输出日志信息 -->
    <settings>
        <setting name="logImpl" value="LOG4J"/>
    </settings>

    <!-- environments 里面的内容在mybatis和spring整合以后, 就全部没了 -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql:///mybatis_day01"/>
                <property name="username" value="root"/>
                <property name="password" value="lxy"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <!-- 将映射文件加载到全局配置文件 -->
        <mapper resource="mybatis/user.xml"/>
    </mappers>
</configuration>

创建mybatis的映射文件user.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="demo">
    <!--
        id:代表这条sql语句, 在SqlSession调用方法的时候, 需要该id作为参数进行传递, 在整个文件中不能重复
        parameterType: 参数的类型
        resultType:User
        #{}:这是个占位符, 如果参数是简单类型(基本类型+String), 那么里面可以随便写.
     -->
    <select id="findUserById" parameterType="int" resultType="com.wtu.mybatis.User">
        select * from `user` where id = #{id}
    </select>
</mapper>

创建日志配置文件log4j.properties

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# MyBatis logging configuration...
log4j.logger.org.mybatis.example.BlogMapper=TRACE
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

根据用户表, 创建User实体类

package com.wtu.mybatis;

import java.util.Date;

/**
 * @Author menglanyingfei
 * @Created on 2018.01.18 16:28
 */
public class User {
    private Integer id;
    private String username;
    private Date birthday;
    private String sex;
    private String address;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    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 [id=" + id + ", username=" + username + ", birthday="
                + birthday + ", sex=" + sex + ", address=" + address + "]";
    }
}

测试类:
操作步骤:
1.怎样获得SqlSession对象 <– SqlSessionFactory <–SqlSessionFactoryBuilder

SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
builder.read(in);
  1. 为了让我们能够看清楚执行过程,我们使用log4j的配置文件用来输出日志信息
package com.wtu.mybatis;

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.InputStream;

/**
 * @Author menglanyingfei
 * @Created on 2018.01.18 16:29
 */
public class MybatisDemo {

    @Test
    public void findUserById() throws Exception {
        // 得到MyBatis全局配置文件的输入流对象
        InputStream in = Resources.getResourceAsStream("mybatis/sqlMapConfig.xml");
        // 得到SqlSessionFactory对象
        SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
        // 得到SqlSession对象
        SqlSession session = factory.openSession();
        // 根据id查询用户
        /*
            param1: 映射文件中的sql id 格式是命名空间.sqlID
            param2: 查询语句需要带的参数
         */
        User user = session.selectOne("demo.findUserById", 10);
        System.out.println(user);
    }
}

测试成功结果:
JUnit.png

完整代码见Github地址

https://github.com/menglanyingfei/SSMLearning/tree/master/mybatis_day01

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值