准备工作:搭建jar包
创建source folder,存放properties文件和xml文件
实现:
entity:`public class Employee {
private int employee_id;
private String login_id;
private String login_pwd;
private String real_name;
public int getEmployee_id() {
return employee_id;
}
public void setEmployee_id(int employee_id) {
this.employee_id = employee_id;
}
public String getLogin_id() {
return login_id;
}
@Override
public String toString() {
return "Employee [employee_id=" + employee_id + ", login_id=" + login_id + ", login_pwd=" + login_pwd
+ ", real_name=" + real_name + ", email=" + email + ", phone=" + phone + ", address=" + address + "]";
}
public void setLogin_id(String login_id) {
this.login_id = login_id;
}
public String getLogin_pwd() {
return login_pwd;
}
public void setLogin_pwd(String login_pwd) {
this.login_pwd = login_pwd;
}
public String getReal_name() {
return real_name;
}
public void setReal_name(String real_name) {
this.real_name = real_name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
private String email;
private String phone;
private String address;
}`
SqlMapConfig.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>
<properties resource="db.properties"></properties>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="Employee.xml"/>
</mappers>
</configuration>```
Employee.xml文件:
<?xml version="1.0" encoding="UTF-8" ?>
select * from employee where employee_id = #{id}
<!-- 返回结果集是集合,resultType写成集合里面放置的对象的类型
${}拼接符 字符串原样拼接,可能有sql语句注入的风险,如果传入的类型是基本类型,${}中的变量名必须是value
-->
<select id="findEmployeeByLoginId" parameterType="java.lang.Integer" resultType="com.mybatis.entity.Employee">
select * from employee where login_id like '%${value}%'
</select>
<insert id="insertEmployee" parameterType="com.mybatis.entity.Employee">
<!-- selectKey将主键返回,需要再返回 -->
<selectKey keyProperty="employee_id" order="AFTER" resultType="java.lang.Integer">
select LAST_INSERT_ID()
</selectKey>
insert into employee(login_id,login_pwd,real_name,email,phone,address)values(#{login_id},#{login_pwd},#{real_name},#{email},#{phone},#{address})
</insert>
<delete id="deleteEmployeeByEmployeeId" parameterType="java.lang.Integer">
delete from employee where employee_id = #{id}
</delete>
<update id="updateEmployeeByEmployeeId" parameterType="com.mybatis.entity.Employee" >
update employee set login_id = #{login_id}, login_pwd = #{login_pwd}, real_name = #{real_name}, email = #{email}, phone = #{phone}, address = #{address} where employee_id = #{employee_id}
</update>
``` DAO层: 接口: ``` public interface EmployeeDao { public Employee findEmployeeByEmployeeId(int id); public List findEmployeeByLoginId(String loginId); public void insertEmployee(Employee employee); public void deleteEmployeeByEmployeeId(int id); public void updateEmployeeByEmployeeId(Employee employee); }
实现:
public class EmployeeDaoImp implements EmployeeDao {
private SqlSessionFactory factory;
public EmployeeDaoImp(SqlSessionFactory factory)
{
this.factory = factory;
}
@Override
public Employee findEmployeeByEmployeeId(int id) {
SqlSession sqlSession = null;
Employee employee = null;
try {
sqlSession = factory.openSession();
employee = sqlSession.selectOne("employee.findEmployeeByEmployeeId", id);
sqlSession.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
return employee;
}
@Override
public List<Employee> findEmployeeByLoginId(String loginId) {
SqlSession sqlSession = null;
List<Employee> employees = null;
try {
sqlSession = factory.openSession();
employees = sqlSession.selectList("employee.findEmployeeByLoginId", loginId);
sqlSession.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
return employees;
}
@Override
public void insertEmployee(Employee employee) {
SqlSession sqlSession = null;
try {
sqlSession = factory.openSession();
sqlSession.insert("employee.insertEmployee", employee);
sqlSession.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
}
@Override
public void deleteEmployeeByEmployeeId(int id) {
SqlSession sqlSession = null;
try {
sqlSession = factory.openSession();
sqlSession.delete("employee.deleteEmployeeByEmployeeId", id);
sqlSession.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
}
@Override
public void updateEmployeeByEmployeeId(Employee employee) {
SqlSession sqlSession = null;
try {
sqlSession = factory.openSession();
sqlSession.update("employee.updateEmployeeByEmployeeId", employee);
sqlSession.commit();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (sqlSession != null) {
sqlSession.close();
}
}
}
}
测试:
public static void main(String[] args) throws IOException {
String resouce = "SqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resouce);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
EmployeeDao employeeDao = new EmployeeDaoImp(factory);
Employee employee = employeeDao.findEmployeeByEmployeeId(3);
System.out.println(employee);
List<Employee> employees = employeeDao.findEmployeeByLoginId("n");
for(Employee e:employees)
{
System.out.println(e);
}
// employeeDao.insertEmployee(employee);
// System.out.println(employee.getEmployee_id());
//
// employeeDao.deleteEmployeeByEmployeeId(9);
employee.setAddress("北京市");
employeeDao.updateEmployeeByEmployeeId(employee);
}
这只是初步应用mybatis,主要目的是实现sql语句与DAO层的分离。