技术帮
 

创建MyBatis项目

本网站内容基本都是原创作品,未得到作者同意也欢迎转载
转载请注明出处:技术帮
说你呢,赶紧长按二维码,然后点击识别图中二维码

任何技术难题可进QQ群提问:【小崔说编程
对于提问的原则是:没有你不能问的,只有我不会答的

1472955908895017376.png说两句


本文讲述基于Servlet创建MyBatis项目,实现基础的增删改查。

本项目以MyBatis访问MySQL数据库为例子演示MyBatis的基本功能。


1473058358717068189.png Web项目创建

创建基本的Web项目,项目命名为mtest

准备必要的jar包,Jar包只需要两个,mybatis的jar包和mysql的connector jar包

blob.png



 准备数据库

本项目将使用mysql的test数据库举例子,创建数据表t_user,表结构如下:

CREATE TABLE `t_user` (
  `noid` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`noid`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8


 配置MyBatis

配置mybatis.cfg.xml文件,类似Hibernate的hibernate.cfg.xml文件,这个文件是myBatis的核心关键配置文件,该文件中将配置MyBatis的数据源、映射文件等。

blob.png


首先在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>


	<!-- 配置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="com.mysql.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://127.0.0.1:3306/test" />
				<property name="username" value="root" />
				<property name="password" value="111111" />
			</dataSource>
		</environment>
	</environments>
	
	<mappers >
    	    <package name="com.jiisb.app.mapper"/>
        </mappers>

</configuration>


 创建User的pojo类

blob.png

文件内容:

package com.jiisb.app.pojo;

public class User {
	
	private Integer noid;
	
	private String username;

	public Integer getNoid() {
		return noid;
	}

	public void setNoid(Integer noid) {
		this.noid = noid;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}
	
	

}


 创建mapper层的映射接口映射xml文件

blob.png


UserMapper.java是一个interface

package com.jiisb.app.mapper;

import java.util.List;

import com.jiisb.app.pojo.User;

public interface UserMapper {
	
	/**
	 * 新增用户
	 * @param u
	 */
	void add(User u);
	
	void edit(User u);
	
	void delById(Integer noid);
	
	User getById(Integer noid);
	
	List<User> allUser();

}


UserMapper.xml定义了查询结构各字段与pojo类字段之间的对应关系,以及UserMapper各方法对应的SQL语句。

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


	<insert id="add" parameterType="com.jiisb.app.pojo.User" useGeneratedKeys="true" keyProperty="noid">
		insert into t_user (username) values(#{username})
	</insert>
	
	<update id="edit" parameterType="com.jiisb.app.pojo.User">
		update t_user set username=#{username} where noid=#{noid}
	</update>
	
	<delete id="delById">
		delete from t_user where noid=#{noid}
	</delete>
	
	<select id="getById" resultMap="userMap">
		select * from t_user where noid=#{noid}
	</select>
	
	<select id="allUser" resultMap="userMap">
		select * from t_user
	</select>

</mapper>


 写一个Servlet方法测试


public class MyServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		SqlSessionFactory sessionFactory;
		try {
			// 使用MyBatis提供的Resources类加载mybatis的配置文件
			Reader reader = Resources.getResourceAsReader("mybatis.cfg.xml");
			// 构建sqlSession的工厂
			sessionFactory = new SqlSessionFactoryBuilder().build(reader);
			
			SqlSession s = sessionFactory.openSession();
			
			UserMapper um=s.getMapper(UserMapper.class);
			List lst=um.allUser();
			System.out.println(lst.size());
			
		} catch (Exception e) {
			e.printStackTrace();
		}

	}

}


1473002656177010553.png 习题


1473058358717068189.png 实现部门、人员的增删改查。

部门属性:部门名称

人员属性:姓名、登录帐号、登录密码、所属部门、电话号码。


查询功能:

可以根据部门名称、姓名、电话号码模糊查询人员列表。