- 一、MyBatis的概述:
- 二、MyBatis环境搭建:
- (1)导入jar包:
- (2)创建mybatis配置文件(mybatis-config.xml):
- (3)获的sqlSession实例:
- 三、MyBatis代码实现
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects。
简而言之,MyBatis是一个能将传统JDBC变得很方便和易于维护的框架。我们只需要提供SQL语句,而建立连接,创建Statement,处理JDBC异常等工作都可以交给MyBatis去做。
mybatis官方中文网站:https://mybatis.org/mybatis-3/zh/index.html
二、MyBatis环境搭建: (1)导入jar包:
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.11version>
<scope>testscope>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>5.1.39version>
dependency>
<dependency>
<groupId>org.mybatisgroupId>
<artifactId>mybatisartifactId>
<version>3.4.1version>
dependency>
(2)创建mybatis配置文件(mybatis-config.xml):
每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例。
有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。SqlSession 提供了在数据库执行 SQL 命令所需的所有方法
在resources目录下新建配置文件mybatis-config.xml:
DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="db.properties" />
<environments default="development">
<environment id="development">
<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>
mappers>
configuration>
注意:标签中可以使用xml或者注解形式配置
(3)获的sqlSession实例:因为SqlSession经常需要重复使用,所有我们可以去编写一个工具类来实现以后需要多次实现的内容:
新建一个utils包,并在utils包下创建MybatisUtils类
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
//获取SqlSessionFactory工厂类
String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
//通过SqlSessionFactory获取SqlSession实例
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}
通过上面的工具类即可获取SqlSession实例,剩下就是对sqlSession一系列 *** 作。
三、MyBatis代码实现SqlSession对数据库的 *** 作既可以使用XML方式也可以使用注解的方式,MyBatis 最初配置信息是基于 XML ,映射语句(SQL)也是定义在 XML 中的。而到了 MyBatis 3提供了新的基于注解的配置。在此只实现注解方式(简便):
例如先编写一个实体类:
public class User {
int stuid;
String username;
int classid;
Classinfo c;
//省略构造方法、get、set、toString方法
}
注意:我们可以不用手写实体类的构造方法、get、set、toString方法。可以导入lombok的jar包,使用注解形式注入(代替手写):
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
<version>1.18.10version>
dependency>
最终的实体类:
@Data //实现setter()、getter()、ToString()、equals()和hashcode()
@NoArgsConstructor //实现无参构造器
@AllArgsConstructor //实现全参构造器
public class User {
int stuid;
String username;
int classid;
Classinfo c;
}
接口类:
@Repository
public interface IUserDAO {
@Select("select * from student where stuid=#{id}")
public Student findOne(@Param("id")int id);
@Update("update student set username=#{username} where stuid=#{stuid}")
public void updateStu(Student student);
@Select("select * from student where classid=#{cid}")
public List<Student> findStusByCid(@Param("cid")int cid);
@Select("select * from student")
@Results({
@Result(column = "classid",property = "classid"),
@Result(property = "c",column = "classid",one = @One(select = "com.dao.ClassinfoDao.findClass",fetchType = FetchType.LAZY))
})
public List<Student> findAllStu();
}
实现类:
@Repository
public class UserImpl implements IUserDAO {
public Student findOne(int id) {
return null;
}
public void updateStu(Student student) {
}
public List<Student> findStusByCid(int cid) {
return null;
}
public List<Student> findAllStu() {
return null;
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)