2020/9/14
使用mybatis的框架来查询所有的学生信息入门操作
1.新建项目
不勾选方框也可以进行下一步,下一步命名自己的工程名
然后点击完成,这样工程项目就创建好了。
(使用xml配置文件来导包就不需要将包下载,然后复制粘贴到项目中,导入包时如果报错标红可以点击idea上的这个按钮,这样就可以让idea帮你下载并且导入包)
导入包之前先声明导入包的类型
jar
先写一段这样的代码告诉要导入什么类型的包,这段表示要导入jar包,然后开始导包
1.第一个包mybatis的包
<dependencies>
<dependency>
<groupId>org.mybatisgroupId>
<artifactId>mybatisartifactId>
<version>3.4.5version>
dependency>
dependencies>
2.在dependency标签中导入第二个包,SQL server数据库的jdbc驱动包
<dependency>
<groupId>com.microsoft.sqlservergroupId>
<artifactId>mssql-jdbcartifactId>
<version>7.4.1.jre11version>
dependency>
3.导入junit的包单元测试包
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.12version>
<scope>testscope>
dependency>
4.导入log4j的包
<dependency>
<groupId>log4jgroupId>
<artifactId>log4jartifactId>
<version>1.2.12version>
dependency>
当前入门项目导入当前的包就可以了
在maven的src下的main包中的java目录下新建包
1.数据库学生信息表的javaBean对象
package cn.zsc.mybatis1.domain;
public class Student {
private Integer id; //学生id
private String name; //学生姓名
private String gender; //学生性别
private Integer age; //学生年龄
private String address; //学生籍贯
private String qq; //学生qq
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 String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getQq() {
return qq;
}
public void setQq(String qq) {
this.qq = qq;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", gender='" + gender + '\'' +
", age=" + age +
", address='" + address + '\'' +
", qq='" + qq + '\'' +
'}';
}
}
2.查询所有学生的信息的持久层接口
package cn.zsc.mybatis1.dao;
import cn.zsc.mybatis1.domain.Student;
import java.util.List;
public interface StudentDao {
/***
* 查询所有的学生信息并且返回到list集合的接口
* @return
*/
public List<Student> finAll();
}
在resources的目录中来创建mybatis的配置xml文件
1.直接点击新建—文件—文件名为log4j.properties的文件
(该文件是日志文件可以直接复制就行,就是必须要叫log4j.properties这个文件名)
# Set root category priority to INFO and its only appender to CONSOLE.
#log4j.rootCategory=INFO, CONSOLE debug info warn error fatal
log4j.rootCategory=debug, CONSOLE, LOGFILE
# Set the enterprise logger category to FATAL and its only appender to CONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE
# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n
# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=d:\axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n
2.编写jdbc.properties文件
(因为我使用的是SQL server的数据库所有使用的是sqlserver的配置方式,其他数据库可以直接在百度上搜索)
使用sqlserver数据库的可以直接复制,但是文件名要为jdbc.properties
jdbc.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc.url=jdbc:sqlserver://localhost:1433;DatabaseName=User_student
jdbc.username=sa
jdbc.password=123456
记得改DatabaseName这个的属性值(根据自己的数据库名来决定)
3.接下来配置mybatis的主配置文件-----文件名mybatis-config.xml
(这个可以自己练一下手熟悉一下,后面可以直接使用idea的文件模板来生成,具体方法可以在百度上搜索)
文件名可以按照官方这样来起名mybatis-config.xml
这个是主配置文件的文件约束一定要有
<properties resource="jdbc.properties">properties>
这是加载jdbc.properties的配置文件
<environments default="development">
<environment id="development">
<transactionManager type="JDBC">transactionManager>
<dataSource type="POOLED">
dataSource>
environment>
environments>
这是配置具体环境的标签,在environments标签的default属性和environment标签的id属性必须相同,使用官方的配置名development
transactionManager 标签表示使用的事务处理方式值为JDBC
dataSource 标签表示是否使用数据连接池值为POOLED
数据连接池的值有三种提供的值
接下来直接在datasourse标签标签体里来配置连接数据库的4个基本信息
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
上面就是配置mybatis的运行环境了。
接下来在environments的标签外来配置映射文件的xml文件
先创建一个映射文件xml文件来映射dao的接口,注意映射配置文件指的是每个dao独立的配置文件,映射xml文件的包位置一定要和dao的接口包位置一致,就是在resources目录下创建包结构和dao接口包结构一致。
mapper的映射文件
<mapper namespace="cn.zsc.mybatis1.dao.StudentDao">
<select id="findAll" resultType="cn.zsc.mybatis1.domain.Student">
select * from Student;
select>
mapper>
在主配置文件下添加mapper标签
<mappers>
<mapper resource="cn/zsc/mybatis1/dao/StudentMapper.xml">mapper>
mappers>
主配置文件全
<configuration>
<properties resource="jdbc.properties">properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC">transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
dataSource>
environment>
environments>
<mappers>
<mapper resource="cn/zsc/mybatis1/dao/StudentMapper.xml">mapper>
mappers>
configuration>
映射文件全
<mapper namespace="cn.zsc.mybatis1.dao.StudentDao">
<select id="findAll" resultType="cn.zsc.mybatis1.domain.Student">
select * from Student;
select>
mapper>
JDBC配置信息文件全(jdbc.properties)
jdbc.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc.url=jdbc:sqlserver://localhost:1433;DatabaseName=User_student
jdbc.username=sa
jdbc.password=123456
该工具类主要用来通过工厂类来获取sqlsession对象,通过sqlsession对象来对持久层接口进行增强,返回增强后的代理对象
package cn.zsc.mybatis1.utils;
import cn.zsc.mybatis1.dao.StudentDao;
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.IOException;
import java.io.InputStream;
public class myBatisUtils {
private SqlSession sqlSession=null;
/***
* 获取代理对象
* @return
*/
public StudentDao getImpl() {
//1.加载配置文件
InputStream in = null;
try {
in = Resources.getResourceAsStream("mybatis-config.xml");
} catch (IOException e) {
e.printStackTrace();
}
//2.创建工厂类
SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();
SqlSessionFactory factory = sqlSessionFactoryBuilder.build(in);
//3.通过工厂类来获取SqlSession对象
sqlSession = factory.openSession();
//4.通过SqlSession对象来对创建代理对象来增强接口,以实现StudentDao的接口
StudentDao studentImpl = sqlSession.getMapper(StudentDao.class);
return studentImpl;
}
/***
* 关闭SQL session
*/
public void close_SqlSession(){
if (sqlSession!=null){
sqlSession.close();
}
}
}
在项目的test的目录下的java目录下来创建一个测试类
import cn.zsc.mybatis1.dao.StudentDao;
import cn.zsc.mybatis1.domain.Student;
import cn.zsc.mybatis1.utils.myBatisUtils;
import java.io.IOException;
import java.util.List;
public class MybatisTest {
public static void main(String[] args){
//1.创建工具对象以获取增强的代理对象
myBatisUtils myBatisUtils=new myBatisUtils();
StudentDao StudentDaoImpl = myBatisUtils.getImpl();
//2.使用代理对象来调用方法
List<Student> studentList = StudentDaoImpl.findAll();
for (Student student : studentList) {
System.out.println(student);
}
//5.关闭Sqlsession
myBatisUtils.close_SqlSession();
}
}
测试得到结果。
使用注解的方式来配置mapper就不需要创建mapper.xml的映射文件
直接在接口的方法上方使用注解就可以
如
import cn.zsc.mybatis.domain.Student;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/***
* 该接口里的方法不使用映射文件的方式而是使用注解的方式
*/
public interface StudentDao {
@Select("select * from Student")
public List<Student> findAll();
}
在上方加一个@Select()这样的注解,值为查询语句,如果要修改就是update注解,删除delete,插入insert。
注意如果使用注解的方式要记得修改主配置文件
(mybatis-config.xml),
将主配置文件mapper标签的属性改为class,值为接口的全限定类名
如
<mappers>
<mapper class="cn.zsc.mybatis.Dao.StudentDao">mapper>
mappers>