|
Mybatis 学习
工具:
IDE: MyEclipse
DataBase: MySQL
Libs/jar: Mybatis,MySQL connector and JUnit;
第一步: 创建Java项目,其基本目录结构如下图:
第二步:创建数据库,并预先插入数据(可执行源码文件中的CONTACT.sql文件)
第三步:创建Contact 类
package com.vic.model;
/**
* Date: 2014-07-16
* @author Vic
*
*/
public class Contact {
private int id; // id
private String name; // 姓名
private String email;// 邮件
private String phone;// 电话
public Contact(){}
public Contact(int id, String name, String email, String phone) {
super();
this.id = id;
this.name = name;
this.email = email;
this.phone = phone;
}
....set 和 get 方法
}
第四步:配置Contact.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="Contact">
<resultMap type="Contact" id="result">
<result property="id" column="CONTACT_ID" />
<result property="name" column="CONTACT_NAME" />
<result property="phone" column="CONTACT_PHONE" />
<result property="email" column="CONTACT_EMAIL" />
</resultMap>
<select id="getAll" resultMap="result">
select * from CONTACT
</select>
<select id="getById" parameterType="int" resultMap="result">
select * from
CONTACT where CONTACT_ID = #{id}
</select>
<delete id="deleteById" parameterType="int">
DELETE from CONTACT WHERE
CONTACT_ID = #{id};
</delete>
<insert id="insert" parameterType="Contact">
INSERT INTO CONTACT (CONTACT_EMAIL, CONTACT_NAME, CONTACT_PHONE)
VALUES (#{email}, #{name}, #{phone});
<selectKey keyProperty="id" resultType="int" order="AFTER">
select last_insert_id() as id
</selectKey>
</insert>
<update id="update" parameterType="Contact">
UPDATE CONTACT
SET
CONTACT_EMAIL = #{email},
CONTACT_NAME = #{name},
CONTACT_PHONE = #{phone}
WHERE CONTACT_ID = #{id};
</update>
</mapper>
第五步:配置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>
<typeAliases>
<typeAlias type="com.vic.model.Contact" alias="Contact"/>
</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/mybatis_study"/>
<property name="username" value="root"/>
<property name="password" value="admin"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/vic/data/Contact.xml" />
</mappers>
</configuration>
第六步:创建工具类MyBatisConnectionFactory 获取sqlSessionFactory
package com.vic.dao;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.Reader;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
/**
* Date: 2014-07-16
* @author Vic
*
*/
public class MyBatisConnectionFactory {
private static SqlSessionFactory sqlSessionFactory;
static{
try {
String resource = "SqlMapConfig.xml";
Reader reader = Resources.getResourceAsReader(resource);
if(sqlSessionFactory == null){
sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
}
}catch(FileNotFoundException fileNotFoundException) {
fileNotFoundException.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSessionFactory getSqlSessionFactory(){
return sqlSessionFactory;
}
}
第七步:ContactDAO
package com.vic.dao;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import com.vic.model.Contact;
/**
* Date: 2014-07-16
* @author Vic
*
*/
public class ContactDAO {
private SqlSessionFactory sqlSessionFactory;
public ContactDAO(){
sqlSessionFactory = MyBatisConnectionFactory.getSqlSessionFactory();
}
/**
* 查询所有记录
* @return
*/
public List<Contact> selectAll(){
SqlSession session = sqlSessionFactory.openSession();
try {
List<Contact> list = session.selectList("Contact.getAll");
return list;
}finally{
session.close();
}
}
/**
* 根据ID查询数据
* @param id
* @return
*/
public Contact selectById(int id){
SqlSession session = sqlSessionFactory.openSession();
try{
Contact contact = (Contact)session.selectOne("Contact.getById",id);
return contact;
}finally{
session.close();
}
}
/**
* 更新数据
* @param contact
*/
public void update(Contact contact){
SqlSession session = sqlSessionFactory.openSession();
try{
session.update("Contact.update",contact);
session.commit();
}finally{
session.close();
}
}
/**
* 插入数据
* @param contact
*/
public void insert(Contact contact){
SqlSession session = sqlSessionFactory.openSession();
try{
session.insert("Contact.insert",contact);
session.commit();
}finally{
session.close();
}
}
/**
* 根据id删除记录
* @param id
*/
public void delete(int id){
SqlSession session = sqlSessionFactory.openSession();
try{
session.delete("Contact.deleteById",id);
session.commit();
}finally{
session.close();
}
}
}
第八步:TestMybatis 类
package com.vic.test;
import static org.junit.Assert.*;
import java.util.List;
import org.junit.Test;
import com.vic.dao.ContactDAO;
import com.vic.model.Contact;
/**
* Date: 2014-07-16
* @author Vic
*
*/
public class TestMybatis {
ContactDAO contactDAO = new ContactDAO();
@Test
public void test() {
fail("Not yet implemented");
}
/**
* 向数据库中插入一条数据
*/
@Test
public void insertTest(){
Contact contact = new Contact();
contact.setEmail("vicTest@test.com");
contact.setName("vicTest");
contact.setPhone("(111) 111-111");
contactDAO.insert(contact);
}
/**
* 查询所有的记录
*/
@Test
public void selectAllTest(){
List<Contact> list = contactDAO.selectAll();
for(int i=0;i<list.size();i++){
Contact contact = list.get(i);
System.out.println("CONTACT_ID="+contact.getId()+",CONTACT_NAME="+contact.getName()+",CONTACT_EMAIL="+contact.getEmail()+",CONTACT_PHONE="+contact.getPhone());
}
}
/**
* 根据id查询结果
*/
@Test
public void selectByIdTest(){
Contact contact = contactDAO.selectById(3);
System.out.println("CONTACT_ID="+contact.getId()+",CONTACT_NAME="+contact.getName()+",CONTACT_EMAIL="+contact.getEmail()+",CONTACT_PHONE="+contact.getPhone());
}
/**
* 更新id为20的数据
*/
@Test
public void updateTest(){
Contact contact = contactDAO.selectById(20);
contact.setEmail("vicTest@test.com");
contact.setName("vicTest");
contact.setPhone("(111) 111-111");
contactDAO.update(contact);
}
/**
* 删除id为1的数据
*/
@Test
public void deleteTest(){
contactDAO.delete(1);
}
}
以上就是MyBatis开发的基本框架的搭建:希望对你对我都有帮助: |
|
|