配置文件(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>
<!--取别名将pojo.Dept取别名为Dept-->
<typeAlias type="pojo.Dept" alias="Dept"></typeAlias>
<typeAlias type="pojo.Employee" alias="Emlpoyee"></typeAlias>
</typeAliases>
<environments default="localhost">
<environment id="localhost">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=UTF-8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="Dao/DeptMapper.xml"></mapper>
<mapper resource="Dao/EmployeeMapper.xml"></mapper>
</mappers>
</configuration>
log4j.properties配置
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# MyBatis logging configuration...
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
#begin
log4j.logger.java.sql = DEBUG
log4j.logger.java.sql.Connection = DEBUG
log4j.logger.java.sql.Statement = DEBUG
log4j.logger.java.sql.PreparedStatement = DEBUG
log4j.logger.java.sql.ResultSet = DEBUG
log4j.logger.com.ibatis = DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource = DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner = DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate = DEBUG
映射文件配置(一个映射文件对应一张表)
本例中以dept和employee表为例
- DeptMapper.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="DEPT"> <!--当传的是单个值时属性值可以任意--> <insert id="addDept" parameterType="String"> insert into dept(name) values(#{name1111}) </insert> <!--当传的是对象时,属性名应该为对象所封装的类的属性--> <insert id="insertDept" parameterType="pojo.Dept"> INSERT INTO dept(name) values (#{name}) </insert> <update id="updatetest" parameterType="pojo.Dept"> update dept set name=#{name} where id=#{id} </update> <delete id="deleteDept" parameterType="Dept"> delete from dept where id=#{id} </delete> <select id="getDept" resultType="Dept"> select id,name from dept </select> <resultMap id="deptMap" type="Dept"> <id property="id" column="ID"></id> <result property="name" column="NAME"></result> </resultMap> <select id="getDeptMap" resultMap="deptMap"> select ID,NAME FROM DEPT </select> </mapper>
- Dao/EmployeeMapper.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="EMPLOYEE">
<insert id="addinfo" parameterType="pojo.Employee">
insert into employee(name,hire_date,salary) values (#{name},#{hire_date},#{salary})
</insert>
<update id="updateEmployee" parameterType="pojo.Employee">
update employee
set name=#{name} ,hire_date=#{hire_date},salary=#{salary}
where id=#{id}
</update>
<resultMap id="emlpoyeeMap" type="Emlpoyee">
<result property="id" column="ID"></result>
<result property="name" column="NAME"></result>
<result property="hire_date" column="HIRE_DATE"></result>
</resultMap>
<select id="getEmpList" resultMap="emlpoyeeMap">
select ID,NAME ,HIRE_DATE,SALARY from employee;
</select>
</mapper>
在测试类中进行测试(mybatis_test)
- 信息添加
public void insert(){ Reader reader=null; SqlSession sqlSession=null; try { reader=Resources.getResourceAsReader("mybatis-config.xml"); SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(reader); sqlSession=sessionFactory.openSession(); sqlSession.insert("DEPT.addDept","测试部2"); sqlSession.commit(); } catch (IOException e) { e.printStackTrace(); sqlSession.rollback(); } finally { try { reader.close(); } catch (IOException e) { } } } ```
- 信息删除
public void del(){
Reader reader=null;
SqlSession sqlSession=null;
try {
reader=Resources.getResourceAsReader("mybatis-config.xml");
SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(reader);
sqlSession=sessionFactory.openSession();
Dept dept=new Dept();
dept.setId(4);
sqlSession.delete("DEPT.deleteDept",dept);
sqlSession.commit();
} catch (IOException e) {
e.printStackTrace();
sqlSession.rollback();
} finally {
try {
reader.close();
} catch (IOException e) {
}
}
}
- 信息修改
public void updata(){
Reader reader=null;
SqlSession sqlSession=null;
try {
reader=Resources.getResourceAsReader("mybatis-config.xml");
SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(reader);
sqlSession=sessionFactory.openSession();
Dept dept=new Dept();
dept.setName("嘟嘟嘟嘟嘟嘟嘟嘟");
dept.setId(5);
sqlSession.update("DEPT.updatetest",dept);
sqlSession.commit();
} catch (IOException e) {
e.printStackTrace();
sqlSession.rollback();
} finally {
try {
reader.close();
} catch (IOException e) {
}
}
}
- 信息查询
两种方式直接用select查询或者用户resultMap查询
//查询 select 语句
public void select3(){
Reader reader=null;
SqlSession sqlSession=null;
try {
reader=Resources.getResourceAsReader("mybatis-config.xml");
SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(reader);
sqlSession=sessionFactory.openSession();
List<Dept> deptst=sqlSession.selectList("DEPT.getDeptMap");
for (Dept dept:deptst){
System.out.println(dept);
}
} catch (IOException e) {
e.printStackTrace();
sqlSession.rollback();
} finally {
try {
reader.close();
} catch (IOException e) {
}
}
}