简单搭建mybatis开发环境

目录

前言    

1、项目目录结构总览

2、准备工作

2.1 新建测试项目,下载jar包

2.2 创建数据库表(本文使用的mysq数据库)

3、环境搭建

3.1 根据目录结构创建对应文件,导包

3.2 配置资源文件

3.3 department包中代码编写(用于sqlSession调用sql)

3.4 user包中代码编写(用于Mapper接口调用sql)

4、功能测试

4.1 通过sqlSession调用sql

4.2 通过Mapper接口调用sql


前言    

    mybatis 众所周知,很优秀的一款持久层框架,具体的概念就不说了,本文就简单的描述下mybatis开发环境的搭建吧。由于mybatis可以通过sqlSession调用sql(延续ibatis)也可以通过Mapper接口调用sql,所以下面从两部分测试下。

1、项目目录结构总览

2、准备工作

2.1 新建测试项目,下载jar包

    项目需要2类包,一是mysql驱动包,一个是mybatis的jar和日志包,日志包在mybatis下的lib目录里。

    mysql驱动包下载地址:https://dev.mysql.com/downloads/connector/j/
    mybatis的jar包和日志包下载地址:https://github.com/mybatis/mybatis-3/releases

2.2 创建数据库表(本文使用的mysq数据库)

    本文需要创建fw_department和fw_user表,创建表的脚本如下(数据自己加):

CREATE TABLE `fw_department` (
  `depid` varchar(32) COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '部门ID',
  `parentdepid` varchar(32) COLLATE utf8_bin DEFAULT NULL COMMENT '父部门ID',
  `depno` varchar(32) COLLATE utf8_bin NOT NULL COMMENT '部门编号',
  `depname` varchar(64) COLLATE utf8_bin NOT NULL COMMENT '部门名称',
  PRIMARY KEY (`depid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

CREATE TABLE `fw_user` (
  `userid` varchar(32) COLLATE utf8_bin NOT NULL COMMENT '人员ID',
  `userno` varchar(32) COLLATE utf8_bin DEFAULT NULL COMMENT '人员编号',
  `username` varchar(32) COLLATE utf8_bin DEFAULT NULL COMMENT '人员姓名',
  PRIMARY KEY (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

3、环境搭建

3.1 根据目录结构创建对应文件,导包

    按照目录结构创建文件,将下载的jar包导入到项目中WEB-INF\lib目录下,并选中所有jar包并点击右键--》Build Path--》Add to Build Path。

3.2 配置资源文件

资源文件包括三部分,分别为jdbc.properties、mybatis-config.xml和log4j.properties
3.2.1 配置jdbc.properties文件内容(用于mybatis全局配置文件),内容如下(根据自己的数据库名称、用户名和密码配置):

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&useSSL=true
jdbc.username=root
jdbc.password=123456

3.2.2 配置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>
    <!-- configuration 中的标签顺序为:properties>settings>typeAliases>typeHandlers>
    objectFactory>plugins>environments>databaseIdProvider>mappers 其中有的标签可以不设置,
          但是设置的标签顺序应遵循以上顺序    -->

	<!-- 加载jdbc.properties文件 -->
    <properties resource="resources/jdbc.properties">
        <!-- 此处可以对jdbc.properties中的参数重新设置
        <property name="username" value="root" />
         -->
    </properties>
    
    <settings>
        <!-- setting中可配置的参数很多,此处值展示部分参数 -->
        <!-- 是否启用缓存 -->
        <setting name="cacheEnabled" value="false" />
        <!-- 是否启用懒加载 -->
        <setting name="lazyLoadingEnabled" value="true" />
        <!-- 使用log4j日志 -->
        <setting name="logImpl" value="LOG4J"/>
    </settings>
    
    <typeAliases>
        <!-- 别名有2种设置方式,一种是通过typeAlias一个一个设置, 一种是通过package设置 -->
        <typeAlias alias="userDTO" type="com.user.UserDTO" />
        <typeAlias alias="departmentDTO" type="com.department.DepartmentDTO" />
        <!-- package设置的默认以对象首字母小写注册的,例如user下对象为UserDTO,
                        则配置<package name="com.user"/>注册的别名为userDTO
         -->
    </typeAliases>

    <environments default="development">
        <environment id="development">
            <!-- 事务管理器的类型有2中,分别为JDBC和MANAGED 
            JDBC指直接使用JDBC的提交和回滚功能;MANAGED指不做提交和回滚,一般让容器来管理事务 -->
            <transactionManager type="JDBC" />
            <!-- 数据源的类型配置有三种分别为POOLED UNPOOLED JNDI
             POOLEN:指使用JDBC数据库连接池,这种方式比较常用。
             UNPOOLED:指每次请求时会创建一个数据库连接,用完后销毁数据库连接。
             JNDI:这种是通过使用外部容器(如EJB容器)来配置数据源,
             -->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}" />
                <property name="url" value="${jdbc.url}" />
                <property name="username" value="${jdbc.username}" />
                <property name="password" value="${jdbc.password}" />
            </dataSource>
        </environment>
    </environments>

    <!-- 配置映射文件 -->
    <mappers>
        <!-- mybatis 映射文件配置有4种,分别为使用mapper路径、使用url引入xml、使用类路径和使用包名 -->
        <!-- 使用mapper路径 -->
        <mapper resource="com/department/dao/DepartmentMapper.xml" />
        <!-- 使用url引入(不常用)
        <mapper url="file:///var/mappers/BlogMapper.xml"/>
         -->
        <!-- 使用类名(此处配置的是接口位置,如果按此种方式配置,则xml和接口必须放在同一目录下)
         -->
         <mapper class="com.user.dao.UserMapper"/>
        <!-- 使用包名
        <package name="com.user.dao"/> -->
    </mappers>
</configuration>

3.2.3 配置log4j.properties,此文件可根据自己需求配置,以下是简单配置:

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# 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

3.3 department包中代码编写(用于sqlSession调用sql)

3.3.1 完善部门DTO对象
    内容是基本属性、get方法、set方法和重写的toString()方法(用于后面测试)。
3.3.2 完善DepartmentMapper.xml
    内容是简单的查询sql,需要注意的是namespace可以随意设置,只要唯一就行,没有通过mapper接口调用sql时设置的那么严格。如下:

<?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="department">
    <select id="findDepartmentByID" parameterType="string" resultType="departmentDTO">
        select depid, parentdepid, depno, depname
        from fw_department
        where depid = #{depID}
    </select>
</mapper>

3.4 user包中代码编写(用于Mapper接口调用sql)

3.4.1 创建用户DTO对象(略)
3.4.2 创建UserMapper接口和UserMapper.xml
注意:
    1、接口中的方法名和UserMapper.xml中select配置的ID必须一致;
    2、接口必须和UserMapper.xml在同一目录下(如果mapper文件是通过class配置的,则此条必须注意,否则可以忽略);
    3、UserMapper.xml中namespace设置的为接口的全路径。
UserMapper.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.user.dao.UserMapper">
    <select id="findUserByID" parameterType="string" resultType="userDTO">
        select userid, userno, username
        from fw_user
        where userid = #{userID}
    </select>
</mapper>

4、功能测试

至此必要的代码已经写完了,测试代码如下:

public static void main(String[] args) throws Exception {
	String resource = "resources/mybatis-config.xml";
	InputStream stream = Resources.getResourceAsStream(resource);
	SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(stream);
	SqlSession sqlSession = sqlSessionFactory.openSession();
	//使用sqlSession执行sql
	testSqlSession(sqlSession);
	//使用mapper接口执行sql
	testMapper(sqlSession);
	sqlSession.close();
}

4.1 通过sqlSession调用sql

public static void testSqlSession(SqlSession sqlSession) {
	DepartmentDTO depDTO = sqlSession.selectOne("department.findDepartmentByID", "001001");
	System.out.println(depDTO.toString());
}

4.2 通过Mapper接口调用sql

public static void testMapper(SqlSession sqlSession) {
	UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
	UserDTO userDTO = userMapper.findUserByID("111");
	System.out.println(userDTO.toString());
}

部分测试结果如下:

DEBUG [main] - Opening JDBC Connection
DEBUG [main] - Created connection 1271041075.
DEBUG [main] - Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@4bc28c33]
DEBUG [main] - ==>  Preparing: select depid, parentdepid, depno, depname from fw_department where depid = ? 
DEBUG [main] - ==> Parameters: 001001(String)
DEBUG [main] - <==      Total: 1
[depID=001001,parentDepID=0,depNO=101,depName=财务部]
DEBUG [main] - ==>  Preparing: select userid, userno, username from fw_user where userid = ? 
DEBUG [main] - ==> Parameters: 111(String)
DEBUG [main] - <==      Total: 1
[userID=111,userNO=19092601,userName=张三]

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 IntelliJ IDEA 中搭建 MyBatis 开发环境,需要按照以下步骤进行: 1. 安装 Maven Maven 是一个项目管理工具,可以帮助我们统一管理项目依赖和构建过程。我们可以在 Maven 的官网下载最新版本的 Maven,并按照官方文档进行安装。 2. 创建 Maven 项目 在 IntelliJ IDEA 中创建一个 Maven 项目,具体步骤是: - 点击 "File" -> "New" -> "Project" - 在弹出的对话框中选择 "Maven" - 在下一步中设置项目的 GroupId、ArtifactId 和 Version - 完成创建项目 3. 添加 MyBatis 依赖 在 pom.xml 文件中添加 MyBatis 的依赖,具体代码如下: ``` <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.6</version> </dependency> ``` 4. 添加数据库驱动依赖 在 pom.xml 文件中添加数据库驱动的依赖,例如 MySQL 驱动的代码如下: ``` <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.22</version> </dependency> ``` 5. 配置 MyBatis 在 resources 目录下创建一个 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> <!-- 在这里配置自定义的别名 --> </typeAliases> <mappers> <!-- 在这里配置自定义的 Mapper --> </mappers> </configuration> ``` 6. 配置数据源 在 resources 目录下创建一个名为 db.properties 的文件,并添加以下代码: ``` jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC jdbc.username=root jdbc.password=root ``` 其中,jdbc.url 表示数据库的 URL,jdbc.username 和 jdbc.password 表示数据库的用户名和密码。 7. 编写 Mapper 接口和 SQL 语句 在 src/main/java 目录下创建一个包,例如 com.example.mapper,在该包下创建一个 Mapper 接口,并添加以下代码: ``` public interface UserMapper { User getUserById(int id); } ``` 然后在 resources 目录下创建一个名为 UserMapper.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.example.mapper.UserMapper"> <select id="getUserById" parameterType="int" resultType="com.example.entity.User"> select * from user where id = #{id} </select> </mapper> ``` 其中,namespace 表示 Mapper 接口的全限定名,select 标签中的 id 表示方法名,parameterType 表示方法的参数类型,resultType 表示方法的返回值类型。 8. 测试 MyBatis 在测试类中编写代码,测试 MyBatis 是否能够正常工作,例如: ``` public class UserMapperTest { @Test public void testGetUserById() { SqlSession sqlSession = MyBatisUtils.getSqlSession(); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); User user = userMapper.getUserById(1); System.out.println(user); sqlSession.close(); } } ``` 9. 运行测试类 在 IntelliJ IDEA 中运行测试类,查看控制台输出,即可测试 MyBatis 是否能够正常工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值