课时1 Mybatis配置以及入门示例
1.)导入所需的jar包 mvn
1 <dependency> 2 <groupId>org.mybatis</groupId> 3 <artifactId>mybatis</artifactId> 4 <version>3.4.5</version> 5 </dependency> 6 7 <dependency> 8 <groupId>mysql</groupId> 9 <artifactId>mysql-connector-java</artifactId> 10 <version>5.1.6</version> 11 </dependency> 12 13 <dependency> 14 <groupId>log4j</groupId> 15 <artifactId>log4j</artifactId> 16 <version>1.2.17</version> 17 </dependency>
.2)Mapper SQL映射的头部
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 4 <mapper namespace="org.hbz.dao.IPersonDao">
.3)mapper SQL映射配置----编写实体对应数据库
1 <mapper namespace="org.hbz.dao.IPersonDao"> 2 <select id="selectPersonById" parameterType="Integer" resultType="org.hbz.entity.Person"> 3 select * from person where id=#{id} 4 </select> 5 </mapper>
1 package org.hbz.entity; 2 3 public class Person { 4 private Integer id; 5 private String name; 6 private Integer age; 7 private String sex; 8 9 public Person() { 10 11 } 12 13 public Person(Integer id, String name, Integer age, String sex) { 14 this.id = id; 15 this.name = name; 16 this.age = age; 17 this.sex = sex; 18 } 19 20 public Integer getId() { 21 return id; 22 } 23 24 public void setId(Integer id) { 25 this.id = id; 26 } 27 28 public String getName() { 29 return name; 30 } 31 32 public void setName(String name) { 33 this.name = name; 34 } 35 36 public Integer getAge() { 37 return age; 38 } 39 40 public void setAge(Integer age) { 41 this.age = age; 42 } 43 44 public String getSex() { 45 return sex; 46 } 47 48 public void setSex(String sex) { 49 this.sex = sex; 50 } 51 52 @Override 53 public String toString() { 54 return "Person{" + 55 "id=" + id + 56 ", name='" + name + '\'' + 57 ", age=" + age + 58 ", sex='" + sex + '\'' + 59 '}'; 60 } 61 }
.4) mybatis的主配置文件头
<?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">
.5)mybatis的主配置文件体
<configuration> <environments default="mysql"> <environment id="mysql"> <!-- 配置事务--> <transactionManager type="JDBC"> </transactionManager> <!-- 配置数据库连接信息--> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/ssm"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <!--加载sql映射文件--> <mappers> <!-- 注意如果是xml文件 格式是../../..--> <mapper resource="org/hbz/dao/personMapper.xml"></mapper> </mappers> </configuration>
.6)log4j配置文件如下
### 设置###
log4j.rootLogger = debug,stdout,D,E
### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n
### 输出DEBUG 级别以上的日志到=E://logs/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = E://logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
### 输出ERROR 级别以上的日志到=E://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =E://logs/error.log
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %t:%r ] - [ %p ] %m%n
.7)dao层
/** * 按照id查询一个学生 * @param id * @return */ Student selectStudentById(Integer id);
.8)测试类
package org.hbz.test; 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.hbz.dao.IPersonDao; import org.hbz.entity.Person; import java.io.IOException; import java.io.Reader; /** * 测试类 */ public class MybatisTest { public static void main(String [] args) throws IOException { //加载mybatis配置文件(为了访问数据库) Reader reader= Resources.getResourceAsReader("config.xml"); //创建工厂 SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(reader); //打开一次会话 SqlSession session=sessionFactory.openSession(); //获取代理对象 IPersonDao iPersonDao = (IPersonDao)session.getMapper(IPersonDao.class); //执行方法 Person person = iPersonDao.selectPersonById(1); System.out.println(person.getName()); //关闭流 reader.close(); //关闭会话 session.close(); } }
.8)mybatis通过namespace加id定位出唯一的sql