Java之SSM框架:MyBatis01--hcking

  Mybatis 

MyBatis的第一次课!

mybatis感觉很nice!操作简便!

mybatis官方网站介绍及资源

http://www.mybatis.org/mybatis-3/zh/getting-started.html

MyBatis,原名ibatis,比hibernate的运行速度快,接近jdbc。开发较为简便,企业一般用的都是mybatis!

<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>MyBatisWork</groupId>
	<artifactId>MyBatisWork</artifactId>
	<packaging>war</packaging>
	<version>0.0.1-SNAPSHOT</version>
	<name>MyBatisWork Maven Webapp</name>
	<url>http://maven.apache.org</url>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.4.1</version>
		</dependency>

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.43</version>
		</dependency>


	</dependencies>
	<build>
		<finalName>MyBatisWork</finalName>
	</build>
</project>

使用的是eclipse+maven进行开发!

 上述是mybatis的依赖配置。

junit:4.12版,适合代码调试。

MyBatis:3.4.1,较为常用。

MySQL:5.1.43,匹配本机的MySQL。

在Java Resources的libraries里maven dependencies内,只有4个包。

注意:如果maven仓库出现未下载完的资源依赖,搜索框输入lastupdate,未下载完的资源即会出现,全部删除即可。

在Java Resources的src/main/resources,新建xml文件,格式为myBatis-config.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>
<typeAliases>
<package name="com.hc.entity"/>
</typeAliases>


  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/cn?characterEncoding=utf-8"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
      </dataSource>
    </environment>
  </environments>
  
  <mappers>
    <mapper resource="com/hc/entity/User.xml"/>
  </mappers>
  
</configuration>

上述是myBatis-config.xml内的基本配置。

typeAliases:别名设置,可以有效进行拼接,一般是com/xx/entity。

 dataSource:数据库设置。

driver:驱动包的类

url:数据库位置

 mappers:实体类的映射文件,里面是各种操作需要的SQL。

在Java Resources的src/main/java,新建对象类。

对象类:/MyBatisWork/src/main/java/com/hc/entity/User.java

package com.hc.entity;

public class User {

	private Integer userId;
	private String userName;

	public User() {
		super();
	}

	public User(String userName) {
		super();
		this.userName = userName;
	}

	public Integer getUserId() {
		return userId;
	}

	public void setUserId(Integer userId) {
		this.userId = userId;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

}

上述的是对象的封装。

映射文件:/MyBatisWork/src/main/java/com/hc/entity/User.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hc.dao.UserDao">

<select id="selAUserByNa" parameterType="java.lang.String" resultType="User">
		select * from user where userName=#{userName}
	</select>

	<select id="selAUser" parameterType="int" resultType="User">
		select * from user where userId=#{userId}
	</select>

	<select id="selAllUser" resultType="User">
		select * from user
	</select>

	<insert id="insUser" parameterType="User">
		insert into user(userName) values(#{userName})
	</insert>

	<delete id="delUser" parameterType="User">
		delete from user where userId=#{userId}
	</delete>

	<update id="updUser" parameterType="User">
		update user set userName=#{userName} where userId=#{userId}
	</update>

</mapper>

namespace:是dao方法的接口。

mapper中的select/insert等标签:

id与dao方法接口的方法名相呼应。

parameterType:传入的值。

resultType:返回值类型。

#{userName}:占位符

insert into user(userName) values(#{userName}):表名后面括号里的是字段名,与values中的数据相对应。

dao方法的接口:/MyBatisWork/src/main/java/com/hc/dao/UserDao.java

package com.hc.dao;

import java.util.List;

import com.hc.entity.User;

public interface UserDao {

	public List<User> selAllUser();
	public User selAUser(Integer userid);
	public List<User> selAUserByNa(String username);
	
	public void insUser(User user);
	public void delUser(Integer userid);
	public void updUser(User user);
}

注意:方法名与mapper中select或insert等的id相同,不需要implement。

检测类:/MyBatisWork/src/test/java/com/hc/test/UserTest.java

package com.hc.test;

import java.util.List;

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

import com.hc.dao.UserDao;
import com.hc.entity.User;

public class UserTest {

	private SqlSessionFactory factory;
	private SqlSession session;

	@Before
	public void before() {
		factory = new SqlSessionFactoryBuilder().build(getClass().getClassLoader().getResourceAsStream("myBatis-config.xml"));
		session = factory.openSession();
	}
	
	@Test
	public void test() {
		UserDao userDao=session.getMapper(UserDao.class);
	
		
//		User user=new User("唐晨");
//		user.setUserId(2);
//		userDao.updUser(user);
		
//		userDao.delUser(1);
		
//		userDao.insUser(new User("花花公子"));
		
//		List<User> users=userDao.selAllUser();
		List<User> users=userDao.selAUserByNa("花花公子");
		for (User user : users) {
			System.out.println(user.getUserId()+"\t"+user.getUserName());
		}
		
//		User user=userDao.selAUser(2);
//		System.out.println(user.getUserId()+"\t"+user.getUserName());

	}
	@After
	public void after() {
		session.commit();
		session.close();
	}
}

注意:

junit的Before在Test之前运行,After在Test之后运行。

ibatis的SqlSessionFactory:SQL工厂

局部变量切出为全局:ctrl+1,convert  local variable to field

getClass().getClassLoader().getResourceAsStream:类加载器,加载配置文件myBatis-config.xml,创建SqlSessionFactory。

session.getMapper:加载dao接口,然后dao().某方法名,传参,即可完成数据操作。

session.commit():insert/update/delete需要将事务提交。

session.close():关闭session连接。

mybatis的第一次操作完成!

实现对数据的操作!

猜你喜欢

转载自blog.csdn.net/qq_43532342/article/details/83472437