zoukankan      html  css  js  c++  java
  • 一个完整的mybatis项目,包含增删改查

    1、导入jar包,导入相关配置文件,均在自己博客园的文件中

    编写mybatis.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "./mybatis-3-config.dtd">
    <configuration>
    <!-- properties配置文件中属性值,在整个配置文件中通过${}进行引用 -->
    <properties>
    	<property name="driver" value="com.mysql.jdbc.Driver" />
    </properties>  
      
    <!-- 数据源环境信息配置 -->  
    <environments default="development">
    	<environment id="development">
    		<transactionManager type="JDBC" />
    		<dataSource type="POOLED">
    			<!-- oracle数据源配置 -->
    			<!-- <property name="driver" value="oracle.jdbc.driver.OracleDriver" /> -->
    			<!-- <property name="url" value="jdbc:oracle:thin:@192.168.1.34:1521:orcl" /> -->
    			<!-- <property name="username" value="scott" /> -->
    			<!-- <property name="password" value="tiger" /> -->
    			<!-- mysql数据源配置 -->
    			<property name="driver" value="${driver}" />
    			<property name="url" value="jdbc:mysql://localhost/ys" />
    			<property name="username" value="root" />
    			<property name="password" value="admin" />
    		</dataSource>
    	</environment>
    </environments>
    
    <mappers>
    	<mapper resource="com/wh/mapper/DeptMapper.xml" />
    </mappers>
    
    </configuration>

    编写单例模式的mybatis测试类

    package com.wh.mapperImpl;
    /**
     * 将mybatis中事务管理这一块,用单例模式实现
     */
    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;
    
    public class BaseDao {
    
    	private static SqlSessionFactory ssf;
    	public SqlSession ss;
    
    	static {
    		String resource = "mybatis.xml";
    		try {
    			// 读取配置文件
    			InputStream in = Resources.getResourceAsStream(resource);
    			// 创建连接工厂
    			ssf = new SqlSessionFactoryBuilder().build(in);
    		}
    		catch (IOException e) {
    			e.printStackTrace();
    		}
    	}
    
    	// 获得连接
    	public SqlSession openSession() {
    		if (ss == null) {
    			// 事务自动提交,默认是false不自动提交   true自动提交
    			ss = ssf.openSession(true);
    		}
    		return ss;
    	}
    
    	// 提交
    	public void commit() {
    		if (ss != null) {
    			ss.commit();
    		}
    	}
    
    	// 回滚
    	public void rollback() {
    		if (ss != null) {
    			ss.rollback();
    		}
    	}
    
    	// 关闭连接
    	public void close() {
    		if (ss != null) {
    			ss.close();
    		}
    	}
    }

    2、编写Dept实体类

    package com.wh.pojo;
    
    public class Dept {
    	private Integer dpt_id;
    	private String dpt_name;
    	private String dpt_ioc;
    
    	public Dept() {
    		// TODO Auto-generated constructor stub
    	}
    
    	public Dept(Integer dpt_id, String dpt_name, String dpt_ioc) {
    		super();
    		this.dpt_id = dpt_id;
    		this.dpt_name = dpt_name;
    		this.dpt_ioc = dpt_ioc;
    	}
    
    	public Integer getDpt_id() {
    		return dpt_id;
    	}
    
    	public void setDpt_id(Integer dpt_id) {
    		this.dpt_id = dpt_id;
    	}
    
    	public String getDpt_name() {
    		return dpt_name;
    	}
    
    	public void setDpt_name(String dpt_name) {
    		this.dpt_name = dpt_name;
    	}
    
    	public String getDpt_ioc() {
    		return dpt_ioc;
    	}
    
    	public void setDpt_ioc(String dpt_ioc) {
    		this.dpt_ioc = dpt_ioc;
    	}
    
    	@Override
    	public String toString() {
    		return "Dept [dpt_id=" + dpt_id + ", dpt_name=" + dpt_name + ", dpt_ioc=" + dpt_ioc + "]";
    	}
    }

    3、编写DeptMapper接口

    package com.wh.mapper;
    
    import java.util.List;
    
    import org.apache.ibatis.annotations.Param;
    
    import com.wh.pojo.Dept;
    
    public interface DeptMapper {
    
    	public void insertDept(Dept dept);
    
    	public List<Dept> selectAll();
    
    	public Dept selectById(Integer id);
    
    	public void updateDept(Dept dept);
    
    	public void deleteDept(Integer id);
    	
    	public List<Dept> selectByName(String name);
    	
    	public List<Dept> selectByMore(@Param("dpt_name")String dpt_name,@Param("dpt_ioc")String dpt_ioc);
    
    	public List<Dept> selectByList(@Param("ids") List<Integer> ids);
    }

    4、导入mybatis-3-mapper.dtd文件

    5、编写DeptMapper.xml文件

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    	"./mybatis-3-mapper.dtd">
    <!--namespace 绑定接口   -->	
    <mapper namespace="com.wh.mapper.DeptMapper"> 
    
    	<!-- 插入  parameterType 参数类型-->
    	<insert id="insertDept" parameterType="com.wh.pojo.Dept"> 
    		insert into dept values (#{dpt_id},#{dpt_name},#{dpt_ioc});
    	</insert>
    
        <!--查询所有        id 接口中的方法名          resultType 返回结果类型-->
    	<select id="selectAll" resultType="com.wh.pojo.Dept"> 
    		select * from dept
    	</select>
    	
    	<!-- 单个查询 -->
    	<select id="selectById" parameterType="java.lang.Integer"  resultType="com.wh.pojo.Dept"> 
    		select * from dept where dpt_id = #{id}
    	</select>
    	
    	<!-- 修改 -->
    	<update id="updateDept" parameterType="com.wh.pojo.Dept"> 
    		update dept set dpt_name=#{dpt_name},dpt_ioc=#{dpt_ioc} where dpt_id = #{dpt_id}
    	</update>
    	
    	<!-- 删除 -->
    	<delete id="deleteDept" parameterType="java.lang.Integer"> 
    		delete from dept where dpt_id=#{dpt_id}
    	</delete>
    
    	<!-- 模糊查询  -->
    	<select id="selectByName" parameterType="java.lang.String" resultType="com.wh.pojo.Dept"> 
    		select * from dept where dpt_name like concat('%',#{dpt_name},'%')
    	</select>
    	
    	<!-- 多重条件查询   接口要对形参注解          concat('%','销售','%')   -->
    	<select id="selectByMore" resultType="com.wh.pojo.Dept"> 
    		select * from dept where 1=1 
    		<if test="dpt_name!=null and dpt_name!='' ">
    			and dpt_name like concat('%',#{dpt_name,jdbcType=VARCHAR},'%')
    		</if>
    		<if test="dpt_ioc!=null and dpt_ioc!='' ">
    			and dpt_ioc like concat(concat('%',#{dpt_ioc,jdbcType=VARCHAR}),'%')
    		</if>
    	</select>
    	
    	<!-- 集合查询   in -->
    	<select id="selectByList" resultType="com.wh.pojo.Dept"> 
    		select * from dept where dpt_id in
    		<foreach collection="ids" index="index" open="(" separator="," close=")" item="id">
    			#{id}
    		</foreach>
    	</select>
    	
    	<!-- 分页查询  -->
    </mapper>

    6、编写DeptMapperImpl实现类

    package com.wh.mapperImpl;
    
    import java.util.List;
    
    import com.wh.mapper.DeptMapper;
    import com.wh.pojo.Dept;
    
    
    public class DeptDaoImpl extends BaseDao implements DeptMapper {
    
    	@Override
    	public void insertDept(Dept dept) {
    		//获得连接
    		this.openSession();
    		//找到接口      获得bean 映射关系   绑定实体类与表列名
    		DeptMapper mapper=(DeptMapper) ss.getMapper(DeptMapper.class);
    		mapper.insertDept(dept);
    	}
    
    	@Override
    	public List<Dept> selectAll() {
    		//获得连接
    		this.openSession();
    		//找到接口
    		DeptMapper mapper=(DeptMapper) ss.getMapper(DeptMapper.class);
    		return mapper.selectAll();
    	}
    
    	@Override
    	public Dept selectById(Integer id) { 
    		this.openSession();
    		DeptMapper mapper=(DeptMapper) ss.getMapper(DeptMapper.class);
    		return mapper.selectById(id);
    	}
    
    	@Override
    	public void updateDept(Dept dept) {
    		this.openSession();
    		DeptMapper mapper=(DeptMapper) ss.getMapper(DeptMapper.class);
    		mapper.updateDept(dept);
    	}
    
    	@Override
    	public void deleteDept(Integer id) {
    		this.openSession();
    		DeptMapper mapper=(DeptMapper) ss.getMapper(DeptMapper.class);
    		mapper.deleteDept(id);
    	}
    
    	@Override
    	public List<Dept> selectByName(String name) {
    		this.openSession();
    		DeptMapper mapper=(DeptMapper) ss.getMapper(DeptMapper.class);
    		return mapper.selectByName(name);
    	}
    
    	@Override
    	public List<Dept> selectByMore(String dpt_name, String dpt_ioc) {
    		this.openSession();
    		DeptMapper mapper=(DeptMapper) ss.getMapper(DeptMapper.class);
    		return mapper.selectByMore(dpt_name,dpt_ioc);
    	}
    
    	@Override
    	public List<Dept> selectByList(List<Integer> ids) {
    		this.openSession();
    		DeptMapper mapper=(DeptMapper) ss.getMapper(DeptMapper.class);
    		return mapper.selectByList(ids);
    	}
    
    }

    7、编写测试类

    package com.wh.junit;
    /**
     * mybatis编写顺序
     * DeptMapper.java、DeptMapper.xml、DeptDaoImpl.java、TestMyBatis.java
     */
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    import org.junit.Test;
    
    import com.wh.mapperImpl.DeptDaoImpl;
    import com.wh.pojo.Dept;
    
    public class TestMyBatis {
    
    	//mybatis快速入门
    	@Test
    	public void test00() throws IOException{
    		InputStream in = Resources.getResourceAsStream("mybatis.xml");
    		SqlSessionFactory ssf=new SqlSessionFactoryBuilder().build(in);
    		SqlSession ss=ssf.openSession();
    		String string = ss.toString();
    		System.out.println(string); 
    	}
    	
    	//插入
    	@Test
    	public void testInsertDept() throws IOException{
    		DeptDaoImpl dao=new DeptDaoImpl(); 
    		dao.insertDept(new Dept(4,"技术","4楼"));
    	}
    	
    	//查询所有
    	@Test
    	public void testSelectAll() throws IOException{
    		DeptDaoImpl dao=new DeptDaoImpl(); 
    		List<Dept> list = dao.selectAll();
    		System.out.println(list.size()); 
    		System.out.println(list); 
    	}
    	
    	//查询单个
    	@Test
    	public void testSelectById() throws IOException{
    		DeptDaoImpl dao=new DeptDaoImpl(); 
    		Dept d = dao.selectById(3);
    		System.out.println(d); 
    	}
    	
    	//修改
    	@Test
    	public void testUpdateDept() throws IOException{
    		DeptDaoImpl dao=new DeptDaoImpl(); 
    		dao.updateDept(new Dept(3,"情报部","xxx"));
    	}
    	
    	//删除
    	@Test
    	public void testdeleteDept() throws IOException{
    		DeptDaoImpl dao=new DeptDaoImpl(); 
    		dao.deleteDept(3);
    	}
    	
    	//模糊查询
    	@Test
    	public void testselectByName() throws IOException{
    		DeptDaoImpl dao=new DeptDaoImpl(); 
    		List<Dept> list = dao.selectByName("销");
    		System.out.println(list);
     	}
    	
    	//多重条件查询
    	@Test
    	public void testSelectByMore() throws IOException{
    		DeptDaoImpl dao=new DeptDaoImpl(); 
    		List<Dept> list = dao.selectByMore("销","2");
    		System.out.println(list);
    	}
    	
    	//集合查询   in
    	@Test
    	public void testSelectByList() throws IOException{
    		DeptDaoImpl dao=new DeptDaoImpl(); 
    		List<Integer> ids=new ArrayList<Integer>();
    		ids.add(1);
    		ids.add(3);
    		List<Dept> list = dao.selectByList(ids);
    		System.out.println(list);
    	}
    }
    

      

  • 相关阅读:
    Java实现 蓝桥杯 算法提高 小X的购物计划
    Java实现 蓝桥杯 算法提高 小X的购物计划
    Java实现 第十一届 蓝桥杯 (高职专科组)省内模拟赛
    Java实现 第十一届 蓝桥杯 (高职专科组)省内模拟赛
    Java实现 第十一届 蓝桥杯 (高职专科组)省内模拟赛
    Java 第十一届 蓝桥杯 省模拟赛 小明的城堡
    Java 第十一届 蓝桥杯 省模拟赛 小明的城堡
    Java 第十一届 蓝桥杯 省模拟赛 小明的城堡
    129. Sum Root to Leaf Numbers
    117. Populating Next Right Pointers in Each Node II
  • 原文地址:https://www.cnblogs.com/1020182600HENG/p/6926338.html
Copyright © 2011-2022 走看看