Mybatis 的基本使用

mybatis的基本使用


mybatis一般可使用两种配置方式,一种代理方式,一种非代配置

  • 数据库表字段
    Mybatis 的基本使用_第1张图片
  • 需要的jar
    Mybatis 的基本使用_第2张图片
  • 包结构
    Mybatis 的基本使用_第3张图片

  • mybatis的基本配置



<configuration>
    
    <properties resource="jdbc.properties" />
    
    <typeAliases>
        <package name="com.bjlemon.mybatis.domian"/>
    typeAliases>
    <environments default="mybatis_1">
        <environment id="mybatis_1">
            
            <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>

      
    <mappers>
        <mapper resource="com/bjlemon/mybatis/mapper/userMapper.xml"/>
    mappers>
configuration>
  • 实体类User.java
package com.bjlemon.mybatis.domian;

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

public class User implements Serializable{
    private Integer id;
    private String name;
    private  String password;
    private Float salary;
    private Date birthday;

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Float getSalary() {
        return salary;
    }

    public void setSalary(Float salary) {
        this.salary = salary;
    }

    public Date getBirthday() {
        return birthday;
    }

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

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        User user = (User) o;
        return Objects.equals(id, user.id) &&
                Objects.equals(name, user.name) &&
                Objects.equals(salary, user.salary) &&
                Objects.equals(birthday, user.birthday);
    }

    @Override
    public int hashCode() {

        return Objects.hash(id, name, salary, birthday);
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", salary=" + salary +
                ", birthday=" + birthday +
                '}';
    }
}

userMapper.xml



<mapper namespace="mybatis_in_action">
    
    <insert id="insert" parameterType="User">
        INSERT  INTO
             mybatis_user(user_name,user_password,user_salary,user_birthday)
         VALUE
               (#{name},#{password},#{salary},#{birthday})
    insert>
    <select id="findAll" resultType="User">
        SELECT
            user_id id ,
            user_name name,
            user_password password ,
            user_salary salary ,
            user_birthday birthday
        FROM
            mybatis_user
    select>
mapper>

UserService接口

package com.bjlemon.mybatis.service;

import com.bjlemon.mybatis.domian.User;

import java.util.List;

public interface UserService {
    void addUser(User user);
    List findAllUserList();
}

UserService实现类

package com.bjlemon.mybatis.service.impl;

import com.bjlemon.mybatis.domian.User;
import com.bjlemon.mybatis.service.UserService;
import com.bjlemon.mybatis.util.MybatisUtils;
import org.apache.ibatis.session.SqlSession;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

public class UerServiceImpl implements UserService{
    @Override
    public void addUser(User user) {
        SqlSession sqlSession = null;
        if (user == null) {
            throw new IllegalArgumentException("");
        }
        try{
            sqlSession = MybatisUtils.getSqlSession();
        /*
           如何mapper文件使用不是代理模式 则此处需要写成
           namespace+方法名
           使用的为代理模式时,则可以直接使用方法名
         */
            sqlSession.insert("mybatis_in_action.insert", user);
            sqlSession.commit();
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            MybatisUtils.clolseSqlSession();
        }

    }

    @Override
    public List findAllUserList() {
        SqlSession sqlSession = null;
        List userList = Collections.emptyList(); // 避免空指针异常

        try{
            sqlSession = MybatisUtils.getSqlSession();
            userList = sqlSession.selectList("mybatis_in_action.findAll");
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            MybatisUtils.clolseSqlSession();
        }
            return  userList;
    }
}

mybatis的sqlSession的创建

  1. 得到SqlSessionFactoryBuilder
  2. 读取配置文件
  3. 由SqlSessionFactoryBuilder到SqlSessionFactory
  4. 由SqlSessionFactory得到SqlSession
package com.bjlemon.mybatis.util;

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.InputStream;
public class MybatisUtils {
    private static  SqlSessionFactoryBuilder builder;
    private static SqlSessionFactory sqlSessionFactory;
    //使得sqlSession线程安全
    private  static  ThreadLocal sqlSessionHolder = new ThreadLocal<>();
    static {
        try{
            builder = new SqlSessionFactoryBuilder();
            // 读取配置文件
           // InputStream in=MybatisUtils.class.getResourceAsStream("/mybatis.xml");
            InputStream resource = Resources.getResourceAsStream("mybatisConfig.xml");
            sqlSessionFactory = builder.build(resource);
        }catch (Exception e){
            e.printStackTrace();
        }

    }

    /**
     * 保证sqlSesssion线程安全
     * @return
     */
    public  static SqlSession getSqlSession(){
        SqlSession sqlSession = sqlSessionHolder.get();
        if (sqlSession == null){
            sqlSession = sqlSessionFactory.openSession();
            sqlSessionHolder.set(sqlSession);
        }
        return  sqlSession;
    }

    public  static  void clolseSqlSession(){
        SqlSession sqlSession = sqlSessionHolder.get();
        if (sqlSession != null){
            sqlSession.close();
            sqlSessionHolder.remove();
        }
    }
}

测试

package com.bjlemon.mybatis.service.impl;

import com.bjlemon.mybatis.domian.User;
import com.bjlemon.mybatis.service.UserService;
import org.junit.Before;
import org.junit.Test;


import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import static org.junit.Assert.*;

public class UerServiceImplTest {
    private UserService userService;
    @Before
    public void setUp() throws Exception {
        this.userService = new UerServiceImpl();
    }

    @Test
    public void addUser() {
        User user = new User();
        user.setBirthday(new Date());
        user.setPassword("121312313123");
        user.setName("1231");
        user.setSalary(12.33F);
        this.userService.addUser(user);
    }

    @Test
    public  void testSelect(){
        List list = this.userService.findAllUserList();
        for (User user: list){
            System.out.println(user);
        }
    }
}

PS: 仅日常笔记整理,有错误请指出,喷子绕路

你可能感兴趣的:(mybatis,Mybatis)