实训纪实02

正式开始配置并使用mybatis,以下是一系列的知识点

1.配置mybatis

1)用maven依赖下载mybatis的jar包

<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.5</version>
    </dependency>
2)编写xml配置文件

在resource文件夹中添加名字为mybatisconf.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="test">

<environment id="test">
<!--事务-->
<transactionManager type="JDBC"></transactionManager>
<!--数据源 连接池 dbcp c3p0 connection-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/hello"/>
<property name="username" value="root"/>
<property name="password" value="123"/>
</dataSource>
</environment>

<environment id="developer">
<transactionManager type=""></transactionManager>
<dataSource type=""></dataSource>
</environment>

</environments>

<!--映射文件 增删改查-->
<mappers>
<mapper resource="dao/StudentMapper.xml"/>
</mappers>
</configuration>
dataSource是以连接池的方式配置连接的   <mappers>标签是连接增删改查的映射文件 

3) 编写StudentMapper.xml文件

在java文件夹中新建dao路径,在dao中写该文件
<mapper namespace="aaa">
<!--查询 -->
<select id="findStudentById" parameterType="int" resultType="pojo.Student">
SELECT * FROM students WHERE id=#{id}
</select>
</mapper>
<mapper>中的namespace确定了引用路径,<select>标签中的id唯一确定了一条select语句,便于在测试中引用,paramterType是入参的类型,在此demo中为int型,值得注意的是,当入参是list类型的时候,paramterType的值为list中实体类的类型,resultType是返回结果的类型,同样当返回值为list类型时,resultType的值为list中实体类的类型。   #{id} 相当于jdbc中的?,当运行时候会被入参所代替。

4)   新建Student实体类(javabean)

public class Student {
    private  int age;
    private String name;
    private String address;
    private int id;
    private family family;
}


5)测试

junit单元测试

在maven添加依赖

<!-- https://mvnrepository.com/artifact/junit/junit -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
测试代码

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import org.apache.ibatis.io.Resources;
import pojo.Student;

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

public class StudentTest {

@Test
public void testFindStudentById(){
//快捷提示快捷键 alt+enter
try {
InputStream inputstream = Resources.getResourceAsStream("mybatisconf.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputstream);
SqlSession sqlSession = sqlSessionFactory.openSession();
Student student = sqlSession.selectOne("aaa.findStudentById", 2);
//sout fori
System.out.println(student);
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Test是junit单元测试的注解,用于需要测试的方法。当需要运行的时候选中方法名称testFindStudentById run运行。inputstream是用来关联mybatisconf.xml文件的。sqlSessionFactory是通过sqlSessionFactoryBuilder的build方法获得的,它通过config配置文件获得一个sqlsessionFactory的实例。sqlsessionFactory由于在应用期间都存在,所以应该用单例模式加以创建

sqlsession底层封装的是jdbc连接,可以执行已映射的sql语句。sqlSession实例不能被共享,所以每一个线程应该独立使用一个sqlSession。

6)错误修改

1.忘记导入mysql的jar包

 <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.38</version>
    </dependency>
2.找不到StudentMapper.xml文件,原因:maven工程默认只在resource文件家下去加载xml文件,其他的地方都不识别,我们可以通过配置pom.xml通知maven加载该文件。

在pom.xml中添加如下代码:

<resources>
<resource>
<!--匹配main/java下的任意文件夹下的后缀为xml的文件-->
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>

   
  3.3字节的 UTF-8 序列的字节 3 无效。
    问题原因:
                
           StudentMapper.xml中所有的注释代码均不能出现中文。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值