Ibatis+DBCP+Mysql数据库访问

15 篇文章 0 订阅
12 篇文章 0 订阅

1. 添加ibatis的jar包依赖

<dependency>  
    <groupId>org.apache.ibatis</groupId>  
    <artifactId>ibatis-sqlmap</artifactId>  
    <version>2.3.4.726</version>  
</dependency>  
<dependency>  
    <groupId>com.ibatis</groupId>  
    <artifactId>ibatis-common</artifactId>  
    <version>2.1.0.565</version>  
</dependency>  

2. 新建ibatis-dbcp-ds.xml配置数据源bean, 注意是dbcp.BasicDataSource的实例

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                               http://www.springframework.org/schema/beans/spring-beans.xsd">


    <bean id="dbcpDatasource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/mydbname"/>
        <property name="username" value="xxxx"/>
        <property name="password" value="xxxx"/>
    </bean>


</beans>


3. 新建ibatis-dbcp-sqlmap.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-2.dtd" >

<sqlMap namespace="galaxy.db.user.sqlmap">
    <typeAlias alias="userDO" type="galaxy.com.db.model.UserDO"/>
    <resultMap id="userDOMap" class="userDO">
        <result property="id" column="id"/>
        <result property="name" column="name"/>
        <result property="age" column="age"/>
        <result property="job" column="job"/>
    </resultMap>

    <select id="queryUserById" parameterClass="int" resultMap="userDOMap">
        select * from user where id=#value#
    </select>

    <insert id="insert" parameterClass="userDO">
        insert into user(name, age , job)
        values(#name#, #age#, #job#)
    </insert>
</sqlMap>

4. 将sqlmap.xml注册到sqlMapConfig中

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN" "http://www.ibatis.com/dtd/sql-map-config-2.dtd">


<sqlMapConfig>
    <settings
            cacheModelsEnabled ="true"
            lazyLoadingEnabled="true"
            enhancementEnabled="true"
            errorTracingEnabled="true"
            maxRequests="1000"
            maxSessions="800"
            maxTransactions="500"
            useStatementNamespaces="true"/>

    <sqlMap resource="beans/ibatis/dbcp/sqlmap/ibatis-dbcp-sqlmap.xml"/>

</sqlMapConfig>


5. 新建ibatis-dbcp-context.xml, 实例化sqlMapClient的bean, transaction需要事务的时候可以用到

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
                               http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--导入数据源bean的配置-->
    <import resource="conf/ibatis-dbcp-ds.xml"/>

    <bean id="dbcpSqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
        <property name="dataSource" ref="dbcpDatasource"/>
        <property name="configLocation" value="beans/ibatis/dbcp/conf/ibatis-dbcp-config.xml"/>
    </bean>

    <bean id="dbcpTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dbcpDatasource"/>
    </bean>

</beans>

6. 数据模型类:

/**
 * Alipay.com Inc.
 * Copyright (c) 2004-2017 All Rights Reserved.
 */
package galaxy.com.db.model;

public class UserDO {
    private Integer id;
    private String name;
    private Integer age;
    private String job;

    /**
     * Getter method for property <tt>id</tt>.
     *
     * @return property value of id
     */
    public Integer getId() {
        return id;
    }

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

    /**
     * Getter method for property <tt>name</tt>.
     *
     * @return property value of name
     */
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    /**
     * Getter method for property <tt>age</tt>.
     *
     * @return property value of age
     */
    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    /**
     * Getter method for property <tt>job</tt>.
     *
     * @return property value of job
     */
    public String getJob() {
        return job;
    }

    public void setJob(String job) {
        this.job = job;
    }
}

7. DAO接口:

/**
 * Alipay.com Inc.
 * Copyright (c) 2004-2017 All Rights Reserved.
 */
package galaxy.com.db.ibatis.dbcp;

import galaxy.com.db.model.UserDO;

public interface DbcpUserDao {
    void insert(UserDO userDO);

    UserDO queryByUserId(Integer id);
}


8. DAO实现类:

/**
 * Alipay.com Inc.
 * Copyright (c) 2004-2017 All Rights Reserved.
 */
package galaxy.com.db.ibatis.dbcp;

import com.ibatis.sqlmap.client.SqlMapClient;
import galaxy.com.db.model.UserDO;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.sql.SQLException;

@Component
public class DbcpUserDaoImpl implements DbcpUserDao {
    @Resource(name = "dbcpSqlMapClient")
    private SqlMapClient dbcpSqlMapClient;
    private String sqlmapNamespace = "galaxy.db.user.sqlmap";



    private String getStatementFullId(String statementId){
        return sqlmapNamespace + "." + statementId;
    }

    @Override
    public void insert(UserDO userDO) {

    }

    @Override
    public UserDO queryByUserId(Integer id) {
        try {
            return (UserDO)dbcpSqlMapClient.queryForObject(getStatementFullId("queryUserById"), id);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return null;
    }
}








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 使用 MyBatis-Plus 实现分页功能,可以使用 MyBatis-Plus 的分页插件。 在 Spring Boot 中使用 MyBatis-Plus 分页,需要在配置文件中启用分页插件,例如: ``` mybatis-plus.mapper-locations=classpath:/mapper/*.xml mybatis-plus.type-aliases-package=com.example.domain mybatis-plus.configuration.map-underscore-to-camel-case=true mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl mybatis-plus.configuration.default-fetch-size=100 mybatis-plus.configuration.default-statement-timeout=30 mybatis-plus.configuration.cache-enabled=false mybatis-plus.configuration.jdbc-type-for-null=NULL mybatis-plus.configuration.lazy-loading-enabled=true mybatis-plus.configuration.aggressive-lazy-loading=false mybatis-plus.configuration.multiple-result-sets-enabled=true mybatis-plus.configuration.use-generated-keys=false mybatis-plus.configuration.use-column-label=true mybatis-plus.configuration.auto-mapping-behavior=FULL mybatis-plus.configuration.safe-row-bounds-enabled=false mybatis-plus.configuration.local-cache-scope=SESSION mybatis-plus.configuration.jdbc-fetch-size=100 mybatis-plus.configuration.max-failures-count=10 mybatis-plus.configuration.call-setters-on-nulls=false mybatis-plus.configuration.return-instance-for-empty-row=false mybatis-plus.configuration.map-underscore-to-camel-case=true mybatis-plus.configuration.use-actual-param-name=true mybatis-plus.configuration.log-prefix=mp mybatis-plus.configuration.log-level=debug mybatis-plus.configuration.force-use-generated-keys=false mybatis-plus.configuration.aggressive-lazy-loading=false mybatis-plus.configuration.auto-mapping-behavior=FULL mybatis-plus.configuration.safe-result-handler-enabled=true mybatis-plus.configuration.safe-result-handler-enabled=true mybatis-plus.configuration.auto-mapping-behavior=FULL mybatis-plus.configuration.default-executor-type=SIMPLE mybatis-plus.configuration.default-statement-timeout=25 mybatis-plus.configuration.default-fetch-size=100 mybatis-plus.configuration.safe-row ### 回答2: 使用Spring Boot和MyBatis Plus实现分页功能的步骤如下: 1. 在Spring Boot的项目中引入MyBatis Plus的依赖。可以在pom.xml文件中加入如下代码: ```xml <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>最新版本</version> </dependency> ``` 注意:需将最新版本替换为实际的MyBatis Plus版本号。 2. 创建实体类。根据数据库中的表结构,创建与之对应的实体类,并在类上使用MyBatis Plus提供的注解@Table来指定对应的数据库表名。 3. 创建Mapper接口。创建一个继承自MyBatis Plus提供的BaseMapper接口的自定义Mapper接口,并使用注解@Mapper来标注该接口。 4. 配置分页插件。在application.properties(或application.yaml)配置文件中添加以下配置: ```properties # 分页插件配置 mybatis-plus.pagehelper.helper-dialect=mysql mybatis-plus.pagehelper.reasonable=true mybatis-plus.pagehelper.support-methods-arguments=true ``` 5. 在Service层编写分页查询方法。在Service层的具体方法中,使用MyBatis Plus的Page类来实现分页功能,示例代码如下: ```java @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public Page<User> getUserList(int pageNum, int pageSize) { Page<User> page = new Page<>(pageNum, pageSize); QueryWrapper<User> queryWrapper = new QueryWrapper<>(); // 可根据需要添加查询条件 // queryWrapper.eq("name", "xxx"); return userMapper.selectPage(page, queryWrapper); } } ``` 6. 在Controller层调用分页查询方法。在Controller层中,根据请求参数传入需要的页码和每页数量,调用Service层的分页查询方法,并将结果返回给前端。示例代码如下: ```java @Controller public class UserController { @Autowired private UserService userService; @GetMapping("/user/list") public String getUserList(@RequestParam("pageNum") int pageNum, @RequestParam("pageSize") int pageSize, Model model) { Page<User> page = userService.getUserList(pageNum, pageSize); model.addAttribute("userList", page.getRecords()); model.addAttribute("total", page.getTotal()); return "userList"; // 返回到前端页面 } } ``` 以上是使用Spring Boot和MyBatis Plus实现分页功能并返回MySQL数据库中的数据的步骤和示例代码。 ### 回答3: 使用Spring Boot集成MyBatis Plus实现分页功能并返回MySQL数据库数据的方法如下: 1. 首先,在pom.xml文件中添加相关依赖: ```xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>最新版本</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies> ``` 2. 创建一个实体类,该实体类对应数据库中的表,并使用MyBatis Plus的注解进行配置,如: ```java @TableName("user") public class User { @TableId(value = "id", type = IdType.AUTO) private Long id; @TableField("name") private String name; // 省略getter和setter方法 } ``` 3. 创建Mapper接口,使用MyBatis Plus提供的BaseMapper接口或者继承BaseMapper接口,如: ```java public interface UserMapper extends BaseMapper<User> { } ``` 4. 创建Service层接口和实现类,实现分页查询的功能,如: ```java public interface UserService { IPage<User> getUserList(int pageNum, int pageSize); } @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public IPage<User> getUserList(int pageNum, int pageSize) { Page<User> page = new Page<>(pageNum, pageSize); // 构建分页查询条件 return userMapper.selectPage(page, null); // 进行分页查询 } } ``` 5. 创建Controller层,使用UserService中的方法获取分页数据,并返回给前端,如: ```java @RestController public class UserController { @Autowired private UserService userService; @GetMapping("/users") public IPage<User> getUsers(@RequestParam(defaultValue = "1") int pageNum, @RequestParam(defaultValue = "10") int pageSize) { return userService.getUserList(pageNum, pageSize); } } ``` 6. 最后,配置数据库连接信息,如在application.properties文件中添加以下信息: ``` spring.datasource.url=jdbc:mysql://localhost:3306/database_name spring.datasource.username=your_username spring.datasource.password=your_password spring.datasource.driver-class-name=com.mysql.jdbc.Driver ``` 以上步骤完成后,启动Spring Boot应用程序,在浏览器访问`localhost:8080/users`即可获取分页数据,并返回到前端。MySQL数据库中的`database_name`为你所使用的数据库名称,`your_username`为你的数据库用户名,`your_password`为你的数据库密码。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值