admin 管理员组文章数量: 887044
2023年12月23日发(作者:二叉树对应的森林怎么画)
MyBatis框架基础知识(01)
1. MyBatis框架的作用
主要作用:简化持久层开发。
持久层:解决项目中的数据持久化处理的相关组件。
使用MyBatis框架实现数据库编程时,只需要指定各个功能对应的抽象方法及需要执行的SQL语句即可。
2. 创建MyBatis项目
MyBatis项目可以是本机直接运行的,不一定需要与SpringMVC框架结合起来一起使用,所以,在创建项目时,只需要创建为jar项目即可。
当项目创建出来之后,需要添加mybatis依赖:
然后,还需要添加MyBatis整合Spring框架的mybatis-spring依赖:
由于需要整合Spring框架,所以,还需要添加Spring框架的spring-context依赖:
其底层实现是基于JDBC的,所以,还需要添加spring-jdbc依赖:
本次将使用MySQL数据库,所以,还需要添加mysql-connector-java依赖:
在连接数据库时,应该使用数据库连接池,所以,还应该添加commons-dbcp依赖:
在开发完某个功能后,应该及时检查开发的功能是否可以正常运行,所以,还添加junit单元测试依赖:
3. 案例准备工作
先登录MySQL控制台,创建名为tedu_ums的数据库:
CREATE DATABASE tedu_ums;
并使用这个数据库:
USE tedu_ums;
在这个数据库中,创建一张用户数据表t_user,表中应该包含以下字段:id、用户名(username)、密码(password)、年龄(age)、手机号码(phone)、电子邮箱(email):
CREATE TABLE t_user (
id int AUTO_INCREMENT,
username varchar(20) NOT NULL UNIQUE,
password varchar(20) NOT NULL,
age int,
phone varchar(20),
email varchar(50),
PRIMARY KEY (id)
) DEFAULT CHARSET=utf8;
4. 测试项目是否可以正常运行
在src/test/java下,创建包,并在这个包中创建ProjectTests测试类,在测试类添加空白的测试方法,以测试JUnit环境是否正常:
package ;
import ;
public class ProjectTests {
@Test
public void contextLoads() {
n("tLoads()");
}
}
凡是在src/test下的文件,都不会参与项目最终打包、部署,所以,一般在编写单元测试时,对代码规范要求并不那么严格,但是,仍应该尽量遵循开发规范。
关于测试方法,必须:
•
必须添加@Test•
必须使用注解;
public权限(从JUnit 5开始不严格要求测试方法的访void表示返回值类型;
问权限);
•
必须使用•
必须保持参数列表为空。
5. 连接数据库
在src/main/resources下创建ties文件,并在其中配置连接数据库的相关信息:
=jdbc:mysql://localhost:3306/tedu_ums?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
=
me=root
rd=root
lSize=2
al=10
接下来,需要在程序中读取以上配置信息,则在src/main/java下创建包,并在这个包中创建SpringConfig类,在该类中读取以上配置,并基于这些配置信息创建urce的对象,将该对象交给Spring框架进行管理:
@PropertySource("ties")
@Configuration
public class SpringConfig {
@Value("${}")
private String url;
@Value("${}")
private String driver;
@Value("${me}")
private String username;
@Value("${rd}")
private String password;
@Value("${lSize}")
private Integer initialSize;
@Value("${al}")
private Integer maxTotal;
@Bean
public DataSource dataSource() {
BasicDataSource dataSource = new BasicDataSource();
(url);
verClassName(driver);
rname(username);
sword(password);
tialSize(initialSize);
Total(maxTotal);
return dataSource;
}
}
完成后,在ProjectTests测试类中添加新的测试方法,在测试方法中,读取Spring的配置文件,并从Spring容器中获取DataSource对象,并调用该对象的getConnection()方法以获取Connection对象,如果能够成功获取对象,则表示配置信息无误,后续MyBatis框架也可以正常连接数据库:
@Test
public void getConnection() throws SQLException {
AnnotationConfigApplicationContext ac
=
AnnotationConfigApplicationContext();
DataSource
);
Connection conn = nection();
n(conn);
();
}
6. 接口与抽象方法
暂定需要实现的功能是:向t_user表中插入用户数据。
在使用MyBatis时,各功能的抽象方法必须写在接口文件中,推dataSource = n("dataSource",
new
荐使用Mapper作为接口名称的后半部分,关于抽象方法的声明:
•
返回值类型:当需要执行的SQL语句是INSERT、DELETE、UPDATE类型之一时,将返回值设计为Integer,在执行时,会返回“受影响的行数”,当然,也可以声明为void,表示“不关心受影响的行数”,推荐使用Integer;
•
方法名称:自定义;
•
参数列表:根据需要执行的SQL语句中的问号?来决定,当方法参数较多时,也可以将多个参数进行封装,然后,使用封装的类型作为抽象方法的参数。
插入用户数据时,需要执行的SQL语句大致是:
insert into t_user (username, password, age, phone, email)
values (?,?,?,?,?)
所以,应该在src/main/java下的包中创建User类,用于封装各属性:
public class User {
private Integer id;
private String username;
private String password;
private Integer age;
private String phone;
private String email;
// Getters & Setters
// toString()
}
然后,在包下创建UserMapper接口,并在接口中添加抽象方法:
public interface UserMapper {
Integer aaa(User user);
}
在后续执行时,还需要使得MyBatis知道接口文件在哪里,则需要在配置类(初始化Spring环境时被加载的类,有@Configuration注解的类)之前添加@MapperScan注解,以配置接口文件所在的包,所以,在SpringConfig类的声明之前补充添加@MapperScan注解并配置接口所在的包:
@PropertySource("ties")
@Configuration
@MapperScan("")
public class SpringConfig {
// ...
}
7. 配置SQL语句
在抽象方法的声明之前,根据要执行的SQL语句的种类,使用@Insert、@Delete、@Update、@Select注解中的某1个来配置SQL语句,由于本次需要执行的是INSERT类型的SQL语句,则需要使用@Insert注解,并在注解参数的字符串中编写SQL语句。
在编写SQL语句时,对于存在?占位的位置,应该写为#{}格式的占位符,占位符的括号中写上属性的名称!
例如:
public interface UserMapper {
@Insert("INSERT INTO t_user (username, password, age,
phone, email) VALUES (#{username}, #{password}, #{age},
#{phone}, #{email})")
Integer aaa(User user);
}
最后,在执行之前,还得使得MyBatis明确执行时使用哪个数据源可以连接数据库,需要在Spring环境中配置一个SqlSessionFactoryBean的对象,则在SpringConfig类中添加:
@Bean
public SqlSessionFactoryBean
sqlSessionFactoryBean(DataSource dataSource) {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
aSource(dataSource);
return bean;
}
全部完成后,在ProjectTests中添加测试方法:
@Test
public void aaa() {
AnnotationConfigApplicationContext ac
=
AnnotationConfigApplicationContext();
UserMapper userMapper = n("userMapper",
);
User user = new User();
rname("mybatis");
sword("1234");
(25);
ne("138****8001");il("***********");Integer rows = (user);
n("rows=" + rows);
();
}
可以自行尝试编写其它的数据访问功能,但是,仅限于:
•
执行的是增、删、改类型的操作;
new
•
设计的抽象方法最多只能有1个参数。
版权声明:本文标题:MyBatis框架基础知识(01) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1703316587h446644.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论