实训三笔记 mybatis02基础配置及应用
目录
IDEA+maven+mybatis的demo
1. 新建maven的model (目录结构图)
2. 在pom.xml
里引入mybatis的maven依赖
<dependencies>
<!--日志 start-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!--日志end-->
<!-- mybatis依赖 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.0</version>
</dependency>
<!-- MySQL数据库依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.26</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>RELEASE</version>
</dependency>
</dependencies>
3. 在dao
层建立接口EmpDao.java
package com.icis.dao;
import com.icis.pojo.Empl;
import org.apache.ibatis.annotations.Insert;
public interface EmpDao {
Empl getEmpById(Integer empId);
// Integer empId;
// String empName;
// Double empSalary;
// Date empIntime;
// Integer empDeptId;
@Insert("INSERT INTO emp(emp_id, emp_name, emp_salary, emp_intime, emp_dept_id) VALUES (NULL, #{empName}, #{empSalary}, #{empIntime}, #{empDeptId})")
Integer insertEmpByEmp(Empl empl);
}
4. pojo包下
创建用户实体类Empl.java
package com.icis.pojo;
import java.util.Date;
public class Empl {
Integer empId;
String empName;
Double empSalary;
Date empIntime;
Integer empDeptId;
public Empl() {
}
public Integer getEmpId() {
return empId;
}
public void setEmpId(Integer empId) {
this.empId = empId;
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
public Double getEmpSalary() {
return empSalary;
}
public void setEmpSalary(Double empSalary) {
this.empSalary = empSalary;
}
public Date getEmpIntime() {
return empIntime;
}
public void setEmpIntime(Date empIntime) {
this.empIntime = empIntime;
}
public Integer getEmpDeptId() {
return empDeptId;
}
public void setEmpDeptId(Integer empDeptId) {
this.empDeptId = empDeptId;
}
@Override
public String toString() {
return "Employee{" +
"empId=" + empId +
", empName='" + empName + '\'' +
", empSalary=" + empSalary +
", empIntime=" + empIntime +
", empDeptId=" + empDeptId +
'}';
}
}
5. 在resources
资源目录下建立druid.properties
数据库配置文件
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///db4
jdbc.username=root
jdbc.password=root
jdbc.initialSize=5
jdbc.maxActive=10
jdbc.maxWait=3000
5. 在resources
资源目录下建立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是我们框架的根标签 -->
<configuration>
<!--导入配置文件-->
<properties resource="druid.properties"></properties>
<typeAliases>
<!--其别名-->
<typeAlias type="com.icis.dao.UserDao" alias="user"></typeAlias>
</typeAliases>
<!-- 配置框架的运行环境 -->
<environments default="development">
<environment id="development">
<!-- 配置事务管理器 这里默认JDBC -->
<transactionManager type="JDBC"/>
<!-- 数据源配置 mybatis内部默认提供的数据库连接池 POOLED -->
<dataSource type="POOLED">
<!-- 连接数据库的四要素 -->
<property name="driver" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--xml方式-->
<!--<mapper resource="UserMapper.xml"></mapper>-->
<!--
接口方式
必须要有UserDao接口和UserDao.xml
名字必须一致
-->
<!--<mapper class="com.icis.dao.UserDao"></mapper>-->
<!-- 包扫描 -->
<package name="com.icis.dao"></package>
</mappers>
</configuration>
5. 在resources
资源目录下建立和java
相同的文件夹结构
com.icis.dao
并建立EmpDao.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">
<!--
namespace 相当于java语言中的包 (用以防止sql语句名称冲突)实现sql语句隔离
namespace 一定要和接口名UserDao.java相同
-->
<mapper namespace="com.icis.dao.EmpDao">
<!--id要和函数名相同 resultType="user" 可以使用别名-->
<!--<select id="getEmpById" parameterType="java.lang.Integer" resultType="com.icis.pojo.Empl">-->
<!--SELECT * FROM emp WHERE emp_id=1-->
<!--</select>-->
<!--<select id="getUserByName" parameterType="string" resultType="com.icis.pojo.User">-->
<!--SELECT * FROM user WHERE username LIKE #{username}-->
<!--</select>-->
<!--List<User> getUserByName(@Param("vo") QueryVo vo);-->
<!--<select id="getUserByName" resultType="com.icis.pojo.User">-->
<!--SELECT * FROM user WHERE username LIKE #{vo.username} limit #{vo.idx},#{vo.pageSize}-->
<!--</select>-->
<!--<!–通过resultMap把User字段和数据库字段对应起来–>-->
<resultMap id="empMap" type="com.icis.pojo.Empl">
<id column="emp_id" property="empId"></id> <!--主键用id-->
<result column="emp_name" property="empName"></result>
<result column="emp_salary" property="empSalary"></result>
<result column="emp_intime" property="empIntime"></result>
<result column="emp_dept_id" property="empDeptId"></result>
</resultMap>
<select id="getEmpById" resultMap="empMap">
SELECT * FROM emp WHERE emp_id = #{empId}
</select>
</mapper>
6. 使用junit
测试
//读取mybatis-config.xml配置文件
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactoryBuilder facBuilder = new SqlSessionFactoryBuilder();
//使用框架获得接口的代理对象
SqlSessionFactory sqlSessionFactory = facBuilder.build(is);
SqlSession sqlSession = sqlSessionFactory.openSession();
EmpDao empDao = sqlSession.getMapper(EmpDao.class);
Empl emp = empDao.getEmpById(1);
System.out.println(emp);
sqlSession.close();
import com.icis.dao.EmpDao;
import com.icis.dao.impl.UserDaoImpl;
import com.icis.pojo.Empl;
import com.icis.pojo.QueryVo;
import com.icis.pojo.User;
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 org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
public class EmpTest {
@Test
public void test5() throws IOException {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactoryBuilder facBuilder = new SqlSessionFactoryBuilder();
//使用框架获得接口的代理对象
SqlSessionFactory sqlSessionFactory = facBuilder.build(is);
SqlSession sqlSession = sqlSessionFactory.openSession();
EmpDao empDao = sqlSession.getMapper(EmpDao.class);
Empl emp = empDao.getEmpById(1);
System.out.println(emp);
}
@Test
public void testInsert() throws IOException {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactoryBuilder facBuilder = new SqlSessionFactoryBuilder();
//使用框架获得接口的代理对象
SqlSessionFactory sqlSessionFactory = facBuilder.build(is);
SqlSession sqlSession = sqlSessionFactory.openSession();
EmpDao empDao = sqlSession.getMapper(EmpDao.class);
Empl empl = new Empl();
empl.setEmpName("哈哈哈");
empl.setEmpSalary(1.2); empl.setEmpIntime(new Date());
Integer ret = empDao.insertEmpByEmp(empl);
sqlSession.commit();
System.out.println(ret);
}
}
IDEA+maven+mybatis的demo
-
新建maven的model (目录结构图)
-
在
pom.xml
里引入mybatis的maven依赖<dependencies> <!--日志 start--> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <!--日志end--> <!-- mybatis依赖 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.0</version> </dependency> <!-- MySQL数据库依赖 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.26</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>RELEASE</version> </dependency> </dependencies>
-
在
dao
层建立接口EmpDao.java
package com.icis.dao; import com.icis.pojo.Empl; import org.apache.ibatis.annotations.Insert;