mybatis简单示例

xml方式构建SqlSessionFactory

开发工具:idea

数据库:mysql

版本管理:maven

项目目录结构:

 

创建t_role表

DROP TABLE IF EXISTS `t_role`;
CREATE TABLE `t_role` (
  `id` bigint(40) NOT NULL COMMENT '主键',
  `role_name` varchar(40) CHARACTER SET utf8 DEFAULT NULL COMMENT '角色名',
  `note` varchar(255) CHARACTER SET utf8 DEFAULT NULL COMMENT '备注',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

pom.xml

<dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.3.0</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.16</version>
    </dependency>

      <!--日志需要-->
      <dependency>
          <groupId>log4j</groupId>
          <artifactId>log4j</artifactId>
          <version>1.2.17</version>
      </dependency>
      <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-api</artifactId>
          <version>1.7.30</version>
      </dependency>
      <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
          <version>1.7.7</version>
      </dependency>

mybatis核心配置文件: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">
<!--test1练习使用的mybatis核心配置文件-->
<configuration>
    <!-- 定义别名 -->
    <typeAliases>
        <!--定义别名role,代表了com.lenovo.test1.pojo.Role,这样我们就可以在Mybatis上下文中引用它了-->
        <typeAlias type="com.lenovo.pojo.Role" alias="role"/>
    </typeAliases>

    <!--定义数据库信息,默认使用development数据库构建环境-->
    <environments default="development">
        <environment id="development">
            <!--采用jdbc事务管理-->
            <transactionManager type="JDBC"/>
            <!--配置数据库链接信息-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mysql?serverTimezone=Asia/Shanghai&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;zeroDateTimeBehavior=convertToNull&amp;useSSL=false"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>

    <!--配置映射器,这里引入了一个xml,它的作用是提供SQL和SQL对POJO的映射规则定义,它包含了映射器里面的信息。mybatis将解析这个xml,来为我们生成映射器-->
    <mappers>
        <mapper resource="mapper\RoleMapper.xml" />
    </mappers>
</configuration>

日志文件:log4j.properties

log4j.rootLogger=DEBUG,stdout
log4j.logger.org.mybatis=DEBUG
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p %d %C: %m%n

RoleMapper.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.lenovo.dao.RoleMapper">

    <select id="getRole" parameterType="long" resultType="role">
        select id,role_name as roleName,note from t_role where id = #{id}
    </select>
    
    <insert id="insertRole" parameterType="role">
        insert into t_role(id,role_name,note)values (#{id},#{roleName},#{note},)
    </insert>

    <delete id="deleteRole" parameterType="long">
        delete from t_role where id = #{id}
    </delete>
</mapper>

RoleMapper.java

 1 package com.lenovo.dao;
 2 
 3 import com.lenovo.pojo.Role;
 4 
 5 public interface RoleMapper {
 6 
 7     //查询单个角色
 8     public Role getRole(Long id);
 9 
10     //新增单个角色
11     public int insertRole(Role role);
12 
13     //删除单个角色
14     public int deleteRole(Long id);
15 }
package com.lenovo.pojo;

public class Role {

    private Long id;//主键
    private String roleName;//角色名称
    private String note;//备注

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getRoleName() {
        return roleName;
    }

    public void setRoleName(String roleName) {
        this.roleName = roleName;
    }

    public String getNote() {
        return note;
    }

    public void setNote(String note) {
        this.note = note;
    }

    @Override
    public String toString() {
        return "Role{" +
                "id=" + id +
                ", roleName='" + roleName + '\'' +
                ", note='" + note + '\'' +
                '}';
    }
}
 1 package com.lenovo.util;
 2 
 3 import org.apache.ibatis.io.Resources;
 4 import org.apache.ibatis.session.SqlSession;
 5 import org.apache.ibatis.session.SqlSessionFactory;
 6 import org.apache.ibatis.session.SqlSessionFactoryBuilder;
 7 
 8 import java.io.IOException;
 9 import java.io.InputStream;
10 
11 public class SqlSessionFactoryUtil {
12 
13     //SqlSessionFactory对象
14     private static SqlSessionFactory sqlSessionFactory = null;
15     //类线程锁
16     private static final Class CLASS_LOCK = SqlSessionFactoryUtil.class;
17 
18     //私有化构造函数
19     private SqlSessionFactoryUtil(){};
20 
21     //构建SqlSessionFactory
22     public static SqlSessionFactory initSqlSessionFactory(){
23         String resource = "mybatis-config.xml";
24         InputStream inputStream = null;
25         try {
26             inputStream = Resources.getResourceAsStream(resource);
27         } catch (IOException e) {
28             e.printStackTrace();
29         }
30 
31         synchronized (CLASS_LOCK){
32             if (sqlSessionFactory == null){
33                 sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
34             }
35         }
36         return sqlSessionFactory;
37     }
38 
39     //打开SqlSession
40     public static SqlSession openSqlSession(){
41         if (sqlSessionFactory == null){
42             initSqlSessionFactory();
43         }
44         return sqlSessionFactory.openSession();
45     }
46 
47 }

测试类:

 1 package com.lenovo;
 2 
 3 import com.lenovo.dao.RoleMapper;
 4 import com.lenovo.pojo.Role;
 5 import com.lenovo.util.SqlSessionFactoryUtil;
 6 import org.apache.ibatis.session.SqlSession;
 7 
 8 /**
 9  * Mybatis xml方式构建SqlSessionFactory
10  */
11 public class MybatisExample {
12 
13     public static void main(String[] args) {
14         SqlSession sqlSession = SqlSessionFactoryUtil.initSqlSessionFactory().openSession();
15         RoleMapper roleMapper = sqlSession.getMapper(RoleMapper.class);
16         Role role = roleMapper.getRole(1l);
17         System.out.println("role名称===》" + role.getRoleName());
18     }
19 
20 }

 

posted @ 2022-03-09 11:12  永远的希望  阅读(111)  评论(0编辑  收藏  举报