Mybatis 系列1-入门

首先创建一个maven工程

jdk使用1.8

目录结构:

 

 

1、在pom文件中添加

<packaging>jar</packaging>
    <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.3</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.12</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>

2、创建User实体类     com.mantishell.domain.User.java

 1 public class User implements Serializable {
 2     private Integer id;
 3     private String name;
 4     private String address;
 5     private String sex;
 6     private Date birthday;
 7 
 8     @Override
 9     public String toString() {
10         return "User{" +
11                 "id=" + id +
12                 ", name='" + name + '\'' +
13                 ", address='" + address + '\'' +
14                 ", sex='" + sex + '\'' +
15                 ", birthday=" + birthday +
16                 '}';
17     }
18 
19     public Integer getId() {
20         return id;
21     }
22 
23     public void setId(Integer id) {
24         this.id = id;
25     }
26 
27     public String getName() {
28         return name;
29     }
30 
31     public void setName(String name) {
32         this.name = name;
33     }
34 
35     public String getAddress() {
36         return address;
37     }
38 
39     public void setAddress(String address) {
40         this.address = address;
41     }
42 
43     public String getSex() {
44         return sex;
45     }
46 
47     public void setSex(String sex) {
48         this.sex = sex;
49     }
50 
51     public Date getBirthday() {
52         return birthday;
53     }
54 
55     public void setBirthday(Date birthday) {
56         this.birthday = birthday;
57     }
58 
59     public User(Integer id, String name, String address, String sex, Date birthday) {
60         this.id = id;
61         this.name = name;
62         this.address = address;
63         this.sex = sex;
64         this.birthday = birthday;
65     }
66 
67     public User() {
68     }
69 }
View Code

3、创建持久层接口IUserDao    com.mantishell.dao.IUserDao.java

public interface IUserDao {

    List<User> findAll();
}

4、在resource添加SqlMapConfig.xml文件

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE configuration
 3         PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4         "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <configuration>
 6     <!--配置环境,default的名称可以随便填写,填写后environment里必须要有该defaullt的内容-->
 7     <environments default="mysql">
 8         <!--配置mysql的环境-->
 9         <environment id="mysql">
10             <!--配置事务的类型-->
11             <transactionManager type="JDBC"></transactionManager>
12             <!--配置数据源(连接池)-->
13             <dataSource type="POOLED">
14                 <property name="driver" value="com.mysql.jdbc.Driver"/>
15                 <property name="url" value="jdbc:mysql://localhost:3306/db1"/>
16                 <property name="username" value="root"/>
17                 <property name="password" value="123456"/>
18             </dataSource>
19         </environment>
20     </environments>
21 
22     <!--指定映射配置文件的位置,映射配置文件指的是每个dao独立的配置文件-->
23     <mappers>
24         <!--resource指定文件的位置-->
25         <mapper resource="com/mantishell/dao/IUserDao.xml" />
26     </mappers>
27 </configuration>

5、在resource下创建持久层接口的映射文件  com.mantishell.dao.IUserDao.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE mapper
 3         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5 <!--namespace写的是dao(持久层接口)的全限定类名-->
 6 <mapper namespace="com.mantishell.dao.IUserDao">
 7     <!--id是dao的方法名称;resultType表示返回的类型-->
 8     <select id="findAll" resultType="com.mantishell.domain.User" >
 9         select * from user
10     </select>
11 </mapper>

6、表的内容

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) DEFAULT NULL,
  `address` varchar(100) DEFAULT NULL,
  `sex` varchar(10) DEFAULT NULL,
  `birthday` date DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8
View Code

7、测试

可以写个main方法

 1 public static void main(String[] args) throws Exception{
 2         //1、读取配置
 3         InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
 4         //2、创建SqlSessionFactory工厂
 5         SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();//创建工厂  mybatis使用了构建者模式,构建者模式:把对象的创建细节隐藏,使使用者直接调用方法即可拿到对象。
 6         SqlSessionFactory factory = builder.build(in);//builder就是构建者
 7         //3、使用工厂生产SqlSession对象
 8         SqlSession session = factory.openSession();//生产SqlSession  使用了工厂模式
 9         //4、使用SqlSession创建Dao接口的代理对象
10         IUserDao userDao = session.getMapper(IUserDao.class);//创建Dao接口实现类 使用了代理模式
11         //5、使用代理对象执行方法
12         List<User> users = userDao.findAll();
13         for (User user : users) {
14             System.out.println(user);
15         }
16         //6、释放资源
17         session.close();
18         in.close();
19     }
View Code

 8、log4j 配置文件

 1 # Set root category priority to INFO and its only appender to CONSOLE.
 2 #log4j.rootCategory=INFO, CONSOLE            debug   info   warn error fatal
 3 log4j.rootCategory=debug, CONSOLE, LOGFILE
 4 
 5 # Set the enterprise logger category to FATAL and its only appender to CONSOLE.
 6 log4j.logger.org.apache.axis.enterprise=FATAL, CONSOLE
 7 
 8 # CONSOLE is set to be a ConsoleAppender using a PatternLayout.
 9 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
10 log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
11 log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n
12 
13 # LOGFILE is set to be a File appender using a PatternLayout.
14 log4j.appender.LOGFILE=org.apache.log4j.FileAppender
15 log4j.appender.LOGFILE.File=e:/axis.log
16 log4j.appender.LOGFILE.Append=true
17 log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
18 log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601} %-6r [%15.15t] %-5p %30.30c %x - %m\n
View Code

 

posted @ 2020-03-13 23:01  mantishell  阅读(180)  评论(0)    收藏  举报