Mybatis基本配置和搭建

今天,主要向大家分享下如何从头搭建一个最简单的mybatis项目

下载地址

Mybatis3 最新下载地址:https://github.com/mybatis/mybatis-3/releases

一, 创建配置文件

在新建的project的src目录下,新建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>

    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <setting name="lazyLoadingEnabled" value="true"/>
    </settings>

    <typeAliases>
        <typeAlias type="com.test.entity.Employee" alias="Employee"/>
        <typeAlias type="com.test.entity.Customer" alias="Customer"/>
    </typeAliases>

    <environments default="local">
        <environment id="local">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/orcl"/>
                <property name="username" value="username"/>
                <property name="password" value="password"/>
            </dataSource>
        </environment>
    </environments>


    <mappers>
        <mapper resource="com/test/data/employee-mapper.xml"/>
        <mapper resource="com/test/data/customer-mapper.xml"/>
    </mappers>
</configuration>

接下来为大家解释下该配置文件中的内容

1. settings
定义mybatis的一些全局设置,这里 配置的两个属性

mapUnderscoreToCamelCase: 在映射database column名字和entity属性名时,自动将带下划线column名转化为常见的java驼峰形式属性名
lazyLoadingEnabled: 延迟加载entity的关联属性

2. typeAlias
定义java类型的别名,比如这里分别将com.yun.entity.Employee和com.yun.entity.Customer设置别名为Employee,Customer。这样在别处配置文件中使用 它们时,就不必再指明带package全名。

3. environments
主要用于配置数据源
可以配置多个environment,以用于不同的产品环境,这里只配置一个用于测试,并定义id为“local”

transactionManager: 有两种类型
1, JDBC : 使用从数据源返回的连接管理commit和rollback
2, MANAGED : 依靠容器来管理transaction

dataSource: 有3种类型
1, UNPOOLED :每次请求新打开连接,用完后关闭连接
2, POOLED : 使用连接池管理连接
3, JNDI :使用容器管理datasource时使用

4. mappers
简而言之,mapper文件用于定义sql语句,以及与其对应的entity
以employee-mapper.xml为例,以下是其简单实现:

<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.test.data.EmployeeMapper">
    <select id="selectAllEmployee" resultType="Employee">
        select * from employee
    </select>

    <select id="selectEmployeeById" parameterType="long" resultType="Employee">
        select * from employee where employee_id=#{id}
    </select>

</mapper>

这里,我们定义了2句sql statement,分别是

selectAllEmployee: 查找所有employee
selectEmployeeById:根据id查找特定employee

返回结果类型均为Employee(看!这里typeAlias就起到作用了,不需要指明class全名),区别在于前者是个List。

这里大家可能会对selectEmployeeById 中的#{id}感到疑惑,别急,下面会为您介绍。

NOTE:配置文件中的顺序不能乱来,对于例子中的几个配置,要按照顺序来定义:settings -> typeAliases -> environments -> mappers.因为mybatis是按照一个固定顺序来解析这个配置文件的,如果顺序不对,加载时会报错。

二,获得SqlSession

不赘述,直接上代码

public class MySqlSession {
    private static String mybatisResource = "mybatis-config.xml";

    private static SqlSessionFactory sqlSessionFactory;

    public static SqlSessionFactory getSqlSessionFactory() {
        try {
            if (sqlSessionFactory == null) {
                InputStream inputStream = Resources.getResourceAsStream(mybatisResource);
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            }

            return sqlSessionFactory;
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    public static SqlSession newSqlSession() {
        SqlSession session = getSqlSessionFactory().openSession();
        return session;
    }
}

通过调用MySqlSession.newSqlSession()即可获得一个SQLSession对象,这也是mybatis中最核心的类了,负责各种select,update,delete接口等,这里就不详细解释了。

三,DAO

马上就到最后一步啦!
还是直接上代码~

public class BatisEmployeeDao {
    public List<Employee> getAllEmployees() {
        SqlSession session = MySqlSession.newSqlSession();
        try {
            List<Employee> ret = session.selectList("selectAllEmployee");
            return ret;
        } finally {
            session.close();
        }
    }

    public Employee getEmployeeById(Long id) {
        SqlSession session = MySqlSession.newSqlSession();
        try {
            Employee employee = session.selectOne("selectEmployeeById", id);
            return employee;
        } finally {
            session.close();
        }
    }
}

看到这里,想必各位看官也知道前面#{id}的value是哪里来的了,是的,它就是 getEmployeeById(Long id)中的参数,但两者名字不要求一致哦。

好了,到这里,一个最简单的mybatis配置和实现已经结束了,希望对您有所帮助。
更多细节参看mybatis官方文档:http://mybatis.github.io/mybatis-3/

  • 16
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
下面是一个基本的Spring Boot + MyBatis项目的框架搭建步骤: 1. 创建Maven项目 使用Maven创建一个新的Java项目。 2. 添加依赖 在pom.xml文件中添加Spring Boot和MyBatis的依赖: ```xml <dependencies> <!-- Spring Boot --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- MyBatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.4</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.23</version> </dependency> </dependencies> ``` 其中,mysql-connector-java为MySQL数据库驱动的依赖。根据需要可以替换为其他数据库的驱动。 3. 配置数据库连接 在application.properties文件中添加数据库连接配置: ``` spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase spring.datasource.username=root spring.datasource.password=password ``` 其中,mydatabase为需要连接的数据库名称,root为数据库用户名,password为数据库用户密码。 4. 创建实体类和DAO层接口 创建实体类和DAO层接口,并在接口中定义需要执行的SQL语句。 5. 创建MyBatis映射文件 在resources目录下创建MyBatis映射文件,并定义SQL语句和参数的映射关系。 6. 配置MyBatis 在application.properties文件中添加MyBatis配置: ``` mybatis.mapper-locations=classpath:mapper/*.xml mybatis.type-aliases-package=com.example.demo.entity ``` 其中,mapper-locations为MyBatis映射文件的位置,type-aliases-package为实体类所在的包名。 7. 创建Service层和Controller层 创建Service层和Controller层,并调用DAO层接口中的方法。 8. 运行项目 运行Spring Boot项目,并测试接口是否能正常调用。 以上就是一个基本的Spring Boot + MyBatis项目的框架搭建步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值