美文网首页
Myabits配置

Myabits配置

作者: 安卓小白之小楼又东风 | 来源:发表于2020-10-10 11:26 被阅读0次

生产环境: eclipse + navicat + mysql

Snipaste_2020-10-10_11-22-20.png

pom.xml设置

  • 这里需要注意的点是mysql-connector-java的版本号和mysql本身的版本要保持一致(也可以是在同一个大版本号下如mysql版本为4.5.1,mysql-connector-java版本就为4.5.X)
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.example</groupId>
  <artifactId>department</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>department</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.4.6</version>
    </dependency>
    <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>8.0.15</version>
    </dependency>
    
  </dependencies>
</project>

myabits-config.xml配置

  • 这里需要注意的问题是driver的版本,低版本的不需要cj,高版本的需要cj
//低版本
 <property name="driver" value="com.mysql.jdbc.Driver"/>
 //高版本(如如如8.0.00),高版本需要加时区
 <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
 <property name="url" value="jdbc:mysql://127.0.0.1:3306/department?serverTimezone=UTC"/>
  • mysql数据库用户名和密码
<property name="username" value="root"/>
<property name="password" value="12345"/>
<?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>
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://127.0.0.1:3306/department?serverTimezone=UTC"/>
        <property name="username" value="root"/>
        <property name="password" value="12345"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="com/example/department/UserMapper.xml"/>
  </mappers>
</configuration>

xxxMapper.xml(我理解为xml的数据库语句)

需要注意的点:

  • mapper的命名空间尽量和Mapper所在的架包下
  • parameterType:参数类型,可以是java普通数据类型,也可以是自定义的实体类
  • resultType:返回值,如果bean与数据库一一对应,则会自动映射
<?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.example.department.UserMapper">
<!-- 通过ID查询一个用户 
 id名字,namespace+id用来定位具体的sql   parameterType:参数类型   resultType:返回值,如果bean与数据库一一对应,则会自动映射   where id=#{v},#{} 占位符,里面要写一个任意字符
-->
<select id="selectDepartment" resultType="com.example.department.Bean.Department" parameterType="com.example.department.Bean.Department">
    select * from department where id=#{id}
</select>
<insert id="addDepartment"  parameterType="com.example.department.Bean.Department">
     insert into department (id,info,leader,u) values (#{id},#{info},#{leader},#{u});
</insert>
<update id="updateDepartment" parameterType="com.example.department.Bean.Department">
update department set info =#{info},leader=#{leader},u=#{u} where id = #{id}
</update>
<delete id="deleteDepartment" parameterType="com.example.department.Bean.Department">
delete from department where id = #{id}
</delete>
</mapper>

java代码

package com.example.department;

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.annotations.Param;
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.example.department.Bean.Department;
import com.example.department.Bean.Student;

public class UserTest {
    //resource为文件路径
    private static String resource="com/example/department/myabits-config.xml";
    //xml为java . 路径
    private static String xml = "com.example.department.UserMapper.";
    //select,selet方法可以不用commit
    public static void selectDepartment(@Param("department")Department department) {
        try {
            InputStream inputStream = Resources.getResourceAsStream(UserTest.resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            SqlSession session = sqlSessionFactory.openSession();
            //搜索一个数据库对象
            Department user = session.selectOne(UserTest.xml+"selectDepartment",department);
            System.out.println(user);
            session.close();
            inputStream.close();
        }catch(IOException e) {
            e.printStackTrace();
        }
    }
    //update
    public static void updateDepartment(Department department) {
        try {
            InputStream inputStream = Resources.getResourceAsStream(UserTest.resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            SqlSession session = sqlSessionFactory.openSession();
            session.update(UserTest.xml+"updateDepartment",department);
            session.commit();
            session.close();
            inputStream.close();
        }catch(IOException e) {
            e.printStackTrace();
        }
    }
    //delete
    public static void deleteDepartment(Department department) {
        try {
 
            InputStream inputStream = Resources.getResourceAsStream(UserTest.resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            SqlSession session = sqlSessionFactory.openSession();
            session.delete(UserTest.xml+"deleteDepartment",department);
            session.commit();
            session.close();
            inputStream.close();
        }catch(IOException e) {
            e.printStackTrace();
        }
    }
    //add
    public static void addDepartment(@Param("department")Department department) {
        try {
            InputStream inputStream = Resources.getResourceAsStream(UserTest.resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            SqlSession session = sqlSessionFactory.openSession();
            session.insert(UserTest.xml+"addDepartment",department);
            session.commit();
            session.close();
            inputStream.close();
        }catch(IOException e) {
            e.printStackTrace();
        
    }
    
    
    }
}

记一个究极傻逼的错误,我在用写sql语句作为了key,花了我一晚上来解决,命名不规范,两行泪呀!

相关文章

网友评论

      本文标题:Myabits配置

      本文链接:https://www.haomeiwen.com/subject/rtidpktx.html