Eclipse中创建MyBatis项目

1. 创建MyBatis项目

创建Maven Project,Group Id使用cn.tedu.mybatis,Artifact Id使用MyBatis,Packaing选择war(也可以选择jar)。

项目创建出来后,需要:生成web.xml文件;在pom.xml中添加依赖;从前序项目中复制spring-mvc.xml到当前项目;添加Tomcat运行环境(此案例可以不需要);打开前序项目的web.xml,将DispatcherServlet和CharacterEncodingFilter的配置复制到当前项目中。

本次另外需要添加依赖:



	org.mybatis
	mybatis
	3.5.1




	org.mybatis
	mybatis-spring
	2.0.1





	org.springframework
	spring-jdbc
	4.3.10.RELEASE





	mysql
	mysql-connector-java
	8.0.16




	commons-dbcp
	commons-dbcp
	1.4




	junit
	junit
	4.12

然后,将spring-mvc.xml复制一份,得到spring-dao.xml,删除spring-dao.xml文件内的配置!

2. 数据库连接

在src/main/resources下创建db.properties文件,用于配置数据库连接的相关信息:

url=jdbc:mysql://localhost:3306/tedu_ums?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
driver=com.mysql.cj.jdbc.Driver
username=root
password=root
initialSize=2
maxActive=10

在配置driver属性时,需要注意所使用的mysql-connector-java的版本,如果使用的5.x版本,该属性值应该是com.mysql.jdbc.Driver,如果使用的是6.x或更高版本,该属性值应该是com.mysql.cj.jdbc.Driver,如果不确定到底应该用哪个值,可以展开mysql-connector-java的jar包文件来观察!另外,在该jar包中还有META-INF/services/java.sql.Driver文件,该文件内记录的就是使用该jar包时应该使用的Driver类。

如果使用的是6.x或以上版本的mysql-connector-java,在配置连接数据库的URL时,还必须显式的设置serverTimezone参数的值!在中国大陆地区可使用的值有Asia/Shanghai和Asia/Chongqing。

需要在spring-dao.xml中添加配置,读取以上db.properties中的配置信息:


然后,连接数据库时,使用到的数据源将是BasicDataSource,则需要将以上读取到的数据库连接信息注入到BasicDataSource的属性中去:



	
	
	
	
	
	

然后,可以在测试类中,编写并执行单元测试,以检查配置是否正确:

public class Tests {
	
	ClassPathXmlApplicationContext ac;
	
	@Before
	public void doBefore() {
		ac = new ClassPathXmlApplicationContext(
				"spring-dao.xml");
	}
	
	@After
	public void doAfter() {
		ac.close();
	}
	
	@Test
	public void getConnection() throws SQLException {
		BasicDataSource dataSource = ac.getBean("dataSource", BasicDataSource.class);
		Connection conn = dataSource.getConnection();
		System.out.println(conn);
	}

}

3. 接口与抽象方法

暂定目标:使用MyBatis向数据表中插入新的用户数据。

使用MyBatis时,需要定义各功能对应的抽象方法,这些抽象方法必须定义在接口中!

首先,应该创建cn.tedu.mybatis.UserMapper接口文件,然后,在接口中定义“插入用户数据”的抽象方法,关于抽象方法的设计原则:

  • 如果需要执行的是增、删、改类型的操作,则使用Integer作为方法的返回值,将表示“受影响的行数”,可用于判断操作成功与否,也可以设计为int,还可以设计为void表示不关心受影响的行数;
  • 方法名称可以自定义,不可以重载;
  • 参数列表根据所需要的参数来决定,可以参考此前学习JDBC时,SQL中有哪些问号,就写哪些参数。

此次“插入用户数据”需要执行的SQL语句大致是:

insert into (username, password, age, phone, email) values (?,?,?,?,?)

则抽象方法需要写5个参数,如果后续该数据表增加了更多的字段,则需要写更多参数,这种做法是有缺陷的,应该将这些参数封装到cn.tedu.mybatis.User类中:

public class User {

	private Integer id;
	private String username;
	private String password;
	private Integer age;
	private String phone;
	private String email;

}

则抽象方法可以设计为:

Integer insert(User user);

接下来,需要配置“接口文件在哪里”,以保证后续MyBatis框架工作时,能找到该接口:



	
	

  1. 配置SQL映射

下载编写配置文件的XML文件压缩包。

在src/main/resources下创建名为mappers的文件夹,并将压缩包中的SomeMapper.xml复制到该文件夹下。

注意:在MyBatis中用于配置SQL语句的XML文件必须包括以下声明,否则将无法正常使用!


在配置该XML文件时,首先,需要添加根节点,且必须配置namespace属性,该属性值表示对应哪个接口文件:





然后,根据所需要执行的SQL语句的种类,从、、、中选择子级节点,节点的id属性就是抽象方法的名称,然后,在节点内容编写需要执行的SQL语句,参数部分使用#{}格式的占位符,占位符内部的名称是方法的参数User类中的属性名:



	INSERT INTO t_user (
		username, password, 
		age, phone, 
		email
	) VALUES (
		#{username}, #{password},
		#{age}, #{phone},
		#{email}
	)

然后,还需要配置“XML文件在哪里”,及框架执行时,“使用哪个数据源连接数据库”!所以,需要在spring-dao.xml中添加配置:



	
	
	
	

最后,编写并执行单元测试:

@Test
public void insert() {
	User user = new User();
	user.setUsername("zhaoqi");
	user.setPassword("888999");
	user.setPhone("010-88888888");
	Integer rows = userMapper.insert(user);
	System.out.println("rows=" + rows);
}

你可能感兴趣的:(框架的相关配置文件,框架)