Mybatis環境搭建和進行簡單的CRUD增刪改查操作
阿新 • • 發佈:2019-01-04
1:首先引入所需要的jar包。包括mybatis-3.2.8.jar、mysql-connector-java-3.1.12-bin.jar、junit4.4.jar、log4j-1.2.17.jar。其中後面2個不是必須需要的。只需要mybatis的和mysql驅動包就行了,上面幾個jar一定要新增至構建路徑。
2:建立mybatis-config.xml檔案。裡面存放mybatis的一些配置資訊。如下:
上面註釋掉的配置資訊是相同的效果。因為配置一些屬性的時候有多種方法。<span style="font-size:18px;"><?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="jdbc.properties"/> --> <properties> <property name="jdbc.driverClassName" value="com.mysql.jdbc.Driver"/> <property name="jdbc.url" value="jdbc:mysql://localhost:3306/db_mybatis?characterEncoding=UTF-8"/> <property name="jdbc.username" value="root"/> <property name="jdbc.password" value="root"/> </properties> <!-- <typeAliases> <typeAlias alias="Student" type="com.levi.model.Student"/> </typeAliases> --> <typeAliases> <package name="com.levi.model"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <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> <environment id="test"> <transactionManager type="JDBC" /> <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> <!-- <mapper resource="com/levi/mappers/StudentMapper.xml" /> --> <!-- <mapper class="com.levi.mappers.StudentMapper"/> --> <package name="com.levi.mappers"/> </mappers> </configuration> </span>
3:建立model類:Student.java
4:建立一個介面類:StudentMapper.java,如下:<span style="font-size:18px;">package com.levi.model; public class Student { private Integer id; private String name; private Integer age; public Student() { super(); // TODO Auto-generated constructor stub } public Student(String name, Integer age) { super(); this.name = name; this.age = age; } public Student(Integer id,String name, Integer age) { this.age=age; this.name=name; this.id=id; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "Student [id=" + id + ", name=" + name + ", age=" + age + "]"; } } </span>
package com.levi.mappers; import java.util.List; import com.levi.model.Student; public interface StudentMapper { public int add(Student student); public int delete(int id); public int update(Student student); public Student getOne(int id); public List<Student> getAll(); }
5:建立StudentMapper.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.levi.mappers.StudentMapper">
<resultMap type="Student" id="StudentResult">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="age" column="age"/>
</resultMap>
<insert id="add" parameterType="Student" >
insert into t_student values(null,#{name},#{age})
</insert>
<delete id="delete" parameterType="int">
delete from t_student where id=#{id}
</delete>
<update id="update" parameterType="Student" >
update t_student set name = #{name} , age = #{age} where id = #{id}
</update>
<select id="getOne" parameterType="int" resultType="Student">
select *from t_student where id = #{id}
</select>
<select id="getAll" resultMap="StudentResult">
select * from t_student
</select>
</mapper>
6:建立一個獲取SqlSession的工具類SqlSessionFactoryUtil.java
package com.levi.util;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class SqlSessionFactoryUtil {
private static SqlSessionFactory sqlSessionFactory;
public static SqlSessionFactory getSqlSessionFactory(){
if(sqlSessionFactory==null){
InputStream inputStream=null;
try{
inputStream=Resources.getResourceAsStream("mybatis-config.xml");
sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
}catch(Exception e){
e.printStackTrace();
}
}
return sqlSessionFactory;
}
public static SqlSession openSession(){
return getSqlSessionFactory().openSession();
}
}
7:配置下log4j的log4j.properties和jdbcproperties檔案jdbc.properties。
log4j.properties檔案:
log4j.rootLogger=info,appender1,appender2
log4j.appender.appender1=org.apache.log4j.ConsoleAppender
log4j.appender.appender2=org.apache.log4j.FileAppender
log4j.appender.appender2.File=logFile.txt
log4j.appender.appender1.layout=org.apache.log4j.TTCCLayout
log4j.appender.appender2.layout=org.apache.log4j.TTCCLayout
jdbc.properties檔案
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/db_mybatis?characterEncoding=UTF-8
jdbc.username=root
jdbc.password=root
8:最後寫個junit測試類ServiceTest.java
package com.levi.service;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.levi.mappers.StudentMapper;
import com.levi.model.Student;
import com.levi.util.SqlSessionFactoryUtil;
public class ServiceTest {
private static Logger logger = Logger.getLogger(ServiceTest.class);
private SqlSession sqlSession = null;
@Before
public void setUp() throws Exception {
sqlSession = SqlSessionFactoryUtil.getSqlSessionFactory().openSession();
}
@After
public void tearDown() throws Exception {
}
@Test
public void add() {
StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
int add = mapper.add(new Student("飛飛飛", 99));
sqlSession.commit();
if (add > 0) {
logger.info("新增成功");
}
}
@Test
public void delete() {
StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
int delete = mapper.delete(14);
sqlSession.commit();
if (delete > 0) {
logger.info("刪除成功");
}
}
@Test
public void update() {
StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
int update = mapper.update(new Student(16, "飛飛飛2", 100));
sqlSession.commit();
if (update > 0) {
logger.info("更新成功");
}
}
@Test
public void getOne()
{
StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
Student one = mapper.getOne(16);
if (one!=null) {
logger.info("查詢一個成功");
}
sqlSession.commit();
System.out.println(one.toString());
}
@Test
public void getAll()
{
StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
List<Student> all = mapper.getAll();
sqlSession.commit();
for (Student student : all) {
System.out.println(student.toString());
}
}
}
上面就搭建了一個mybatis的環境和進行了簡單的增刪改查。