Maven下用MyBatis搭建JAVAWEB项目,并且连接数据库。

1、首先是在Maven环境下首先在Maven的pom.xml文件中添加:

       
        <dependencies>
            <!-- 从中央仓库加载mybatis的资源 -->
             <dependency>
	        <groupId>org.mybatis</groupId>
	        <artifactId>mybatis</artifactId>
	        <version>3.3.1</version>
	    </dependency>
        </dependencies>

当然,可能还需要一些其他的相关资源,可以根据你自己的需求在mvnrepository中查找相关配置。

2、对其进行配置(核心)

因为在maven环境下,我们创建如下:在资源文件夹下创建mybatis.xml。

mybatis.xml的文档结构可以依照http://www.mybatis.org/mybatis-3/。

当然也可以依照以下结构:

<?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="mysqljdbc.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.driverClassName}" />
                <property name="url" value="${jdbc.url}" />
                <property name="username" value="${jdbc.username}" />
                <property name="password" value="${jdbc.password}" />
            </dataSource>
        </environment>
    </environments> 
    <!-- 这里是后面会解释 -->
    <mappers>
    	<mapper resource="com/hxq/main/EmpMapper.xml" />
    </mappers>
     
    
</configuration>

这里我是采用了properties文件来配置mysql的各项参数,有助于维护。

  3、数据库相关配置

这里是配置数据库储存结果的.xml:创建EmpMapper.xml

<?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="Emp">
<!-- 自定义返回结果集 -->
   <resultMap id="empMap" type="com.hxq.bean.Emp">
        <id property="id" column="id" javaType="java.lang.Integer"></id>
        <result property="post_type" column="post_type" javaType="java.lang.Integer"></result>
        <result property="emp_name" column="emp_name" javaType="java.lang.String"></result>
        <result property="emp_sex" column="emp_sex" javaType="java.lang.Integer"></result>
        <result property="emp_age" column="emp_age" javaType="java.lang.Integer"></result>
        <result property="emp_depart" column="emp_depart" javaType="java.lang.String"></result>
        <result property="emp_year" column="emp_year" javaType="java.lang.Integer"></result>
    </resultMap>
<!-- 在各种标签中的id属性必须和接口中的方法名相同 , id属性值必须是唯一的,不能够重复使用。parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型-->    
<!-- useGeneratedKeys:( 仅 对 insert 有 用 ) 这 会 告 诉 MyBatis 使 用 JDBC 的getGeneratedKeys 
            方法来取出由数据(比如:像 MySQL 和 SQLServer 这样的数据库管理系统的自动递增字段)内部生成的主键。默认值: false。 -->    
<!--keyProperty: (仅对 insert有用)标记一个属性, MyBatis 会通过 getGeneratedKeys或者通过 insert 语句的 selectKey 子元素设置它的值。默认:不设置。 -->
<!--#{}中的内容,为占位符,当参数为某个JavaBean时,表示放置该Bean对象的属性值  -->

<!-- 当你写的什么sql语句时,就什么是标签名(insert、update、delete、select、) -->
    <insert id="insertEmp" useGeneratedKeys="true" keyProperty="id">
        insert into employee (id,post_type,emp_name,emp_sex,emp_age,emp_depart,emp_year) values (#{id},#{post_type},#{emp_name},#{emp_sex},#{emp_age},#{emp_depart},#{emp_year})
    </insert>
    
    <update id="updateEmp" >
      update employee set post_type=#{post_type},emp_name=#{emp_name},emp_sex=#{emp_sex} where id=#{id}
    </update>
    
    <delete id="deleteEmp" parameterType="int">
     delete from employee where id=#{id}  
    </delete>
    
    <select id="selectUserById" parameterType="int" resultMap="empMap">
     select * from employee where id=#{id}
    </select>
    
    <select id="selectAllEmp" resultMap="empMap">
     select * from employee
    </select>
    
    
</mapper>

仔细观察几个标签的id等会可能会用到

<mapper namespace="Emp">

 <select id="selectAllEmp" resultMap="empMap">

MyBatis中的SqlSession

用来操纵数据库的,先来创建吧:DBAccess.java

package com.hxq.main;

import java.io.IOException;
import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

/**
 * 访问数据库类
 * @author 贺湘泉
 *
 */
public class DBAccess {
	public static SqlSession getSqlSession() throws IOException{
                //配置文件的路径
		String resource = "mybatis.xml";
		//通过配置文件获取数据库连接信息
		InputStream inputStream = Resources.getResourceAsStream(resource);
		SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
		SqlSessionFactory sqlSessionFactory = builder.build(inputStream);
		SqlSession session = sqlSessionFactory.openSession();
		return session;
	}
}

专门来获取SqlSession对象的。

4 、接下来是重头戏:

我们一般在DAO层写一些增删改查的操作,但是接下来,没错还是在DAO层进行。看完以后你在想象用myBatis有什么不同。

Bean对象我就不一一创建解释了。

直接写一个查询所有的方法吧。

        /**
	 * 查询所有员工信息
	 */
public List<Emp> selectAllUser() throws Exception {
		SqlSession sqlSession = null;
		sqlSession = DBAccess.getSqlSession();//获取SqlSession对象
                //这里要主意了下面文章解释
		List<Emp> list = sqlSession.selectList("Emp.selectAllEmp");
		sqlSession.close();
		return list;
	}

sqlSession.selectList("Emp.selectAllEmp");

selectList();方法就是查询的咯,当有参数时,是直接跟在后面的。这是SqlSession中提供的方法。

例如:selectList("Emp.selectAllEmp",ename,id);

但是"Emp.selectAllEmp"是什么意思呢?


 这端话意思就是配置EmpMapper.xml中Emp标签下selectAllEmp。就是你要执行的sql语句啦。

就完啦,详细请关注-小阿毛- 会持续更新!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值