发表于: 2019-12-28 18:51:00

3 1082


今天学习的内容:

MyBatis对mysql数据库操作:

参考:https://www.cnblogs.com/xqz0618/p/javaweb03.html

MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。
MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索。
MyBatis 使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java 对象)映射成数据库中的记录。


pom.xml配置:

<?xml version="1.0" encoding="UTF-8"?>

<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.me</groupId>
 <artifactId>project2</artifactId>
 <version>1.0-SNAPSHOT</version>

 <name>project2</name>
 <!-- FIXME change it to the project's website -->
 <url>http://www.example.com</url>

 <properties>
   <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
   <druid.version>1.1.17</druid.version>
   <maven.compiler.source>1.7</maven.compiler.source>
   <maven.compiler.target>1.7</maven.compiler.target>
     <spring.version>5.2.2.RELEASE</spring.version>
   <mybatis.spring.version>2.0.0</mybatis.spring.version>
 </properties>

 <dependencies>
   <dependency>
     <groupId>junit</groupId>
     <artifactId>junit</artifactId>
     <version>4.11</version>
     <scope>test</scope>
   </dependency>
   <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-beans</artifactId>
       <version>${spring.version}</version>
   </dependency>
   <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-context</artifactId>
     <version>${spring.version}</version>
   </dependency>
   <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-jdbc</artifactId>
     <version>${spring.version}</version>
   </dependency>
   <dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
     <version>8.0.11</version>
   </dependency>
   <dependency>
     <groupId>commons-dbcp</groupId>
     <artifactId>commons-dbcp</artifactId>
     <version>1.4</version>
   </dependency>
   <dependency>
         <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
         <version>3.5.0</version>
      </dependency>
   <dependency>
     <groupId>org.glassfish.web</groupId>
     <artifactId>javax.servlet.jsp.jstl</artifactId>
     <version>1.2.4</version>
   </dependency>
   <dependency>
     <groupId>javax</groupId>
     <artifactId>javaee-api</artifactId>
     <version>8.0</version>
     <scope>provided</scope>
   </dependency>
   <dependency>
     <groupId>org.glassfish.web</groupId>
     <artifactId>javax.servlet.jsp.jstl</artifactId>
     <version>1.2.4</version>
   </dependency>
   <!-- MyBatis的配置 -->
   <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
   <dependency>
     <groupId>org.mybatis</groupId>
     <artifactId>mybatis</artifactId>
     <version>3.5.1</version>
   </dependency>
   <!-- druid数据源 -->
   <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
   <dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>druid</artifactId>
     <version>${druid.version}</version>
   </dependency>
   <dependency>
     <!-- spring-jdbc spring操作数据库的驱动包 -->
     <groupId>org.springframework</groupId>
     <artifactId>spring-jdbc</artifactId>
     <version>${spring.version}</version>
   </dependency>
   <dependency>
     <!-- MyBatisSpring连接的包 -->
     <groupId>org.mybatis</groupId>
     <artifactId>mybatis-spring</artifactId>
     <version>${mybatis.spring.version}</version>
   </dependency>
   <!-- OJDBC8 -->

   <dependency>
     <groupId>c3p0</groupId>
     <artifactId>c3p0</artifactId>
     <version>0.9.1.2</version>
   </dependency>
     <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-context-support</artifactId>
     <version>${spring.version}</version>
     </dependency>
   <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-tx</artifactId>
     <version>${spring.version}</version>
   </dependency>
   <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-aspects</artifactId>
     <version>${spring.version}</version>
   </dependency>
   <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-core</artifactId>
     <version>${spring.version}</version>
   </dependency>
   <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-expression</artifactId>
     <version>${spring.version}</version>
   </dependency>
   <!-- https://mvnrepository.com/artifact/commons-logging/commons-logging -->
   <dependency>
     <groupId>commons-logging</groupId>
     <artifactId>commons-logging</artifactId>
     <version>1.1.1</version>
   </dependency>
   <!-- https://mvnrepository.com/artifact/log4j/log4j -->
   <dependency>
     <groupId>log4j</groupId>
     <artifactId>log4j</artifactId>
     <version>1.2.17</version>
   </dependency>
 </dependencies>


 <build>
   <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
     <plugins>
       <!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
       <plugin>
         <artifactId>maven-clean-plugin</artifactId>
         <version>3.1.0</version>
       </plugin>
       <!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
       <plugin>
         <artifactId>maven-resources-plugin</artifactId>
         <version>3.0.2</version>
       </plugin>
       <plugin>
         <artifactId>maven-compiler-plugin</artifactId>
         <version>3.8.0</version>
       </plugin>
       <plugin>
         <artifactId>maven-surefire-plugin</artifactId>
         <version>2.22.1</version>
       </plugin>
       <plugin>
         <artifactId>maven-jar-plugin</artifactId>
         <version>3.0.2</version>
       </plugin>
       <plugin>
         <artifactId>maven-install-plugin</artifactId>
         <version>2.5.2</version>
       </plugin>
       <plugin>
         <artifactId>maven-deploy-plugin</artifactId>
         <version>2.8.2</version>
       </plugin>
       <!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
       <plugin>
         <artifactId>maven-site-plugin</artifactId>
         <version>3.7.1</version>
       </plugin>
       <plugin>
         <artifactId>maven-project-info-reports-plugin</artifactId>
         <version>3.0.0</version>
       </plugin>
     </plugins>
   </pluginManagement>
 </build>


 
</project>



Resources中创建conf.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>
       <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://localhost:3306/test?serverTimezone=GMT%2B8" />
                    <property name="username" value="root" />
                    <property name="password" value="*******" />
                </dataSource>
            </environment>
        </environments>
       <mappers>
           <!-- 注册userMapper.xml文件,
           userMapper.xml位于com.springdemo.mapping这个包下,所以resource写成com/springdemo/model/mapping/userMapper.xml-->
           <mapper resource="com/springdemo/model/mapping/userMapper.xml"/>
       </mappers>
    </configuration>

创建User类

package com.springdemo.model;
public class User {
//    public User(String userId, String userName, String userPwd, String userPower) {
//        super();
//        this.userId = userId;
//        this.userName = userName;
//        this.userPwd = userPwd;
//        this.userPower = userPower;
//    }
   public User(String name){
super();
       this.name=name;
   }
public User() {
super();
   }
private int id;
   private int _key;
   private  String name;
//    private String userId;
//    private String userName;
//    private String userPwd;
//    private String userPower;

//    public int get_key() {
//        return _key;
//    }
       public int get_id(){
return id;
   }
//    public void set_key(int _key) {
//        this._key = _key;
//    }
//
//    public String getUserId() {
//        return userId;
//    }
//
//    public void setUserId(String userId) {
//        this.userId = userId;
//    }
//
//    public String getUserName() {
//        return userName;
//    }
//
//    public void setUserName(String userName) {
//        this.userName = userName;
//    }
//
//    public String getUserPwd() {
//        return userPwd;
//    }
//
//    public void setUserPwd(String userPwd) {
//        this.userPwd = userPwd;
//    }
//
//    public String getUserPower() {
//        return userPower;
//    }
//
//    public void setUserPower(String userPower) {
//        this.userPower = userPower;
//    }
   @Override
   public String toString() {
return "User [id="+id+" name=" + name + "]";
   }
}

创建user表sql查询映射文件

<?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指定一个唯一的namespacenamespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的
例如namespace="com.springdemo.mapping.userMapper"就是com.springdemo.mapping(包名)+userMapper(userMapper.xml文件去除后缀)
-->
<mapper namespace="com.springdemo.model.mapping.userMapper">
   <!-- select标签中编写查询的SQL语句, 设置select标签的id属性为getUserid属性值必须是唯一的,不能够重复
   使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型
   resultType="com.springdemo.model.User"就表示将查询结果封装成一个User类的对象返回
   User类就是users表所对应的实体类
   -->
   <!-- 根据_key查询得到一个user对象-->
   <select id="getUser" parameterType="int"
           resultType="com.springdemo.model.User"> <!-- 创建对应user实体类的位置 -->
           select * from table_test1 where id=#{id}
</select>
</mapper>

conf.xml中注册userMapper:

<?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://localhost:3306/test?serverTimezone=GMT%2B8" />
                    <property name="username" value="root" />
                    <property name="password" value="123654789" />
                </dataSource>
            </environment>
        </environments>
       <mappers>
           <!-- 注册userMapper.xml文件,
           userMapper.xml位于com.springdemo.mapping这个包下,所以resource写成com/springdemo/model/mapping/userMapper.xml-->
           <mapper resource="com/springdemo/model/mapping/userMapper.xml"/>
       </mappers>
    </configuration>

使用Test.java 文件添加测试

package com.springdemo.impl;

import java.io.IOException;
import java.io.InputStream;
import java.io.Reader;
import java.util.List;

import com.springdemo.model.User;
//import com.springdemo.tools.DBTools;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class Test {

public static void main(String[] args) throws IOException {

//mybatis的配置文件
       String resource = "conf.xml";
       //使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)

       InputStream is = Resources.getResourceAsStream(resource);
       //构建sqlSession的工厂

       SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
       //使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件)
       //Reader reader = Resources.getResourceAsReader(resource);
       //构建sqlSession的工厂
       //SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
       //创建能执行映射文件中sqlsqlSession
       SqlSession session = sessionFactory.openSession();
       /**
        * 映射sql的标识字符串,
        * me.gacl.mapping.userMapperuserMapper.xml文件中mapper标签的namespace属性的值,
        * getUserselect标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL
        */

       /* 根据——key查找 */
       String statement = "com.springdemo.model.mapping.userMapper.getUser";
       //映射sql的标识字符串,getUser与映射文件中配置select标签id一致
       //执行查询返回一个唯一user对象的sql
       User user = session.selectOne(statement, 2);
       System.out.println(user);

   }
}

执行结果报错:

遇到的困难:

 以上例子执行结果报错,暂时还不知道怎么解决

收获:

 大致了解了下MyBatis的基础知识,以及连接数据库的方法.

明天的计划:

  学习Mybatis框架,学习spring框架






返回列表 返回列表
评论

    分享到