mybatis_实现一个非spring项目

本文详细介绍了如何在非Spring环境下搭建并使用MyBatis,包括数据库准备、项目创建、配置文件编写、实体类创建、接口及映射文件设定、工具类创建以及DAO层操作。通过实例演示了增删改查操作,并展示了完整的目录结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 一、数据库准备

准备数据库数据

Localhost:3306

root

123qwe

创建

CREATE table t_person(

  id int PRIMARY KEY auto_increment,

  username varchar(20),

password varchar(20),

account decimal(10,2)

);

 

 

二、开发实战(spring项目)

1. 下载包:

mybatis需要jar包:mybatis-3.4.1.jar

mysql驱动jar包:mysql-connector-java-5.1.38 .jar

mybatis/spring驱动包:mybatis-spring-1.3.0.jar

日志记录jar包:log4j.jar

 

上面需要的jar可直接在maven官网下载mysql驱动jar

http://mvnrepository.com/artifact/mysql/mysql-connector-java

Maven项目则不需需下载。

 

2. 创建web项目

名为:useMybatis

 

3. mysql驱动配置文件

 

jdbc.driverClass=com.mysql.jdbc.Driver

jdbc.jdbcUrl=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8

jdbc.user=root

jdbc.password=123qwe

 

4. mybatis配置文件

 

创建mybatis.cfg.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>

<!-- 引入外部配置文件 -->

<properties resource="mysql.properties"></properties>

<!-- 配置mybatis运行环境 -->

<environments default="cybatis">

<environment id="cybatis">

<!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 -->

<transactionManager type="JDBC" />

<!-- mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI -->

<!-- POOLED 表示支持JDBC数据源连接池 -->

<!-- UNPOOLED 表示不支持数据源连接池 -->

<!-- JNDI 表示支持外部数据源连接池 -->

    <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>  

</configuration>

 

5. 添加实体类

t_person对应的实体类:

 

package com.gary.model;

import java.io.Serializable;

public class PersonBean implements Serializable{

private static final long serialVersionUID = 1L;

private Integer id;

private String username;

private String password;

private Double account;

public PersonBean() {

super();

}

public PersonBean(String username, String password, Double account) {

super();

this.username = username;

this.password = password;

this.account = account;

}

public PersonBean(Integer id, String username, String password,

Double account) {

super();

this.id = id;

this.username = username;

this.password = password;

this.account = account;

}

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public Double getAccount() {

return account;

}

public void setAccount(Double account) {

this.account = account;

}

}

 

6. 创建接口文件映射文件

 

接口文件提供简单的增删改查数据信息

public interface PersonMapper {

/**

      * 新增用戶

      */

     public int insertPerson(PersonBean person) throws Exception;

     /**

      * 修改用戶

      */

     public int updatePerson(PersonBean person, int id) throws Exception;

      /**

       * 刪除用戶

       */

     public int deletePerson(int id) throws Exception;

     /**

      * 根据id查询用户信息

      */

     public PersonBean selectPersonById(int id) throws Exception;

      /**

       * 查询所有的用户信息

       */

     public List<PersonBean> selectAllPerson() throws Exception;

}

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.gary.papper.PersonMapper">

<!-- 自定义返回结果集 -->

<resultMap id="personMap" type="com.gary.model.PersonBean">

        <id property="id" column="id" javaType="java.lang.Integer"></id>

        <result property="username" column="username" javaType="java.lang.String"></result>

        <result property="password" column="password" javaType="java.lang.String"></result>

        <result property="account" column="account" javaType="java.lang.Double"></result>

    </resultMap>

<!-- 在各种标签中的id属性必须和接口中的方法名相同 , id属性值必须是唯一的,不能够重复使用。parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型-->    

<!-- useGeneratedKeys:( 仅 对 insert 有 用 ) 这 会 告 诉 MyBatis 使 用 JDBC getGeneratedKeys

            方法来取出由数据(比如:像 MySQL SQLServer 这样的数据库管理系统的自动递增字段)内部生成的主键。默认值: false-->    

<!--keyProperty: (仅对 insert有用)标记一个属性, MyBatis 会通过 getGeneratedKeys或者通过 insert 语句的 selectKey 子元素设置它的值。默认:不设置。 -->

<!--#{}中的内容,为占位符,当参数为某个JavaBean时,表示放置该Bean对象的属性值  -->

     <insert id="insertPerson" useGeneratedKeys="true" keyProperty="id">

         insert into t_person (username,password,account) values (#{username},#{password},#{account})

     </insert>

     

     <update id="updatePerson" >

       update t_person set username=#{username},password=#{password},account=#{account} where id=#{id}

     </update>

     

     <delete id="deletePerson" parameterType="int">

      delete from t_person where id=#{id}  

     </delete>

     

     <select id="selectPersonById" parameterType="int" resultMap="personMap">

      select * from t_person where id=#{id}

     </select>

     

     <select id="selectAllPerson" resultMap="personMap">

      select * from t_person

     </select>

</mapper>

注:namespace="com.gary.papper.PersonMapper"

namespacexml对应的接口名字,这样xml和接口类就一一对应起来了。

Id为接口中的方法名。

 

7. 在mybatis配置文件中注册映射文件

在mybatis.cfg.xml后添加:

    <mappers>

         <!-- 告知映射文件方式1,一个一个的配置-->

         <mapper resource="com/gary/mapper/PersonMapper.xml"/>

         <!-- 告知映射文件方式2,自动扫描包内的Mapper接口与配置文件

         <package name="com.gary.mapper"/> -->

    </mappers>

使用方式2没有成功,不知道什么原因。

 

8. 创建工具类创建session

 

package com.gary.tools;

import java.io.Reader;

import org.apache.ibatis.io.Resources;

import org.apache.ibatis.session.SqlSession;

import org.apache.ibatis.session.SqlSessionFactory;

import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class DBTools {

public static SqlSessionFactory sessionFactory;

static{

try {

//使用MyBatis提供的Resources类加载mybatis的配置文件

Reader reader = Resources.getResourceAsReader("mybatis.cfg.xml");

//构建sqlSession的工厂

sessionFactory = new SqlSessionFactoryBuilder().build(reader);

} catch (Exception e) {

e.printStackTrace();

}

 

}

//创建能执行映射文件中sqlsqlSession

public static SqlSession getSession(){

return sessionFactory.openSession();

}

}

 

9. 创建dao

 

package com.gary.dao;

import java.util.List;

import org.apache.ibatis.session.SqlSession;

import com.gary.mapper.PersonMapper;

import com.gary.model.PersonBean;

import com.gary.tools.DBTools;

public class PersonDao {

public static void main(String[] args){

insertPerson();

selectAllPerson();

}

     /**

      * 新增用户

      */

     private static void insertPerson() {

         SqlSession session = DBTools.getSession();

         PersonMapper mapper = session.getMapper(PersonMapper.class);

         PersonBean person = new PersonBean("张三", "1314520", 7000.0);

         try {

             mapper.insertPerson(person);

             System.out.println(person.toString());

              session.commit();

         } catch (Exception e) {

             e.printStackTrace();

             session.rollback();

         }

     }

     

     /**

      * 删除用户

      */

     private static void deletePerson(){

         SqlSession session=DBTools.getSession();

         PersonMapper mapper=session.getMapper(PersonMapper.class);

         try {

             mapper.deletePerson(1);

             session.commit();

         } catch (Exception e) {

             e.printStackTrace();

             session.rollback();

         }

     }

     

     /**

      * 根据id查询用户

      */

     private static void selectPersonById(){

         SqlSession session=DBTools.getSession();

         PersonMapper mapper=session.getMapper(PersonMapper.class);

         try {

         PersonBean person=    mapper.selectPersonById(2);

         System.out.println(person.toString());             

             session.commit();

         } catch (Exception e) {

             e.printStackTrace();

             session.rollback();

         }

     }

     

     /**

     * 查询所有的用户

      */

     private static void selectAllPerson(){

         SqlSession session=DBTools.getSession();

         PersonMapper mapper=session.getMapper(PersonMapper.class);

         try {

         List<PersonBean> person=mapper.selectAllPerson();

         System.out.println(person.toString());

         session.commit();

         } catch (Exception e) {

             e.printStackTrace();

             session.rollback();

         }

     }

}

 

通过daomain方法测试通过。

回顾一下整个环节,最终创建的目录结构如下:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值