zoukankan      html  css  js  c++  java
  • Mybatis配置过程——增删改查实例

    一、配置过程:

    1. 创建一个项目

    2. 导入所有的Jar包

           数据库驱动

           MyBatis核心包

           MyBatis依赖包

           JUnit

          

    3. 配置log4j

    4. 创建MyBatis的核心配置文件 SqlMapConfig.xml

    5. 创建实体类

           实体类定义的规则

           1.实体类的属性要与数据库中的字段相对应

           2.属性要私有化,同时提供每个属性的setter getter;

           3.实体类必须要有无参的构造方法

          

    6. 创建Mapper配置

           namespace命名空间,隔离不同的SQL操作

           SQL操作节点: select update insert delete     CRUD

                  id:指定一个唯一的名称

                  parameterType:指定参数的类型

                  resultType:指定返回结果的类型

                  SQL语句:参数的传递有两种方式,1. #{} 2. ${}

                  当有多个参数需要传递给SQL语句时,先将这些参数封装到实体类中,以对象的方式传递

                         此时,可以使用#{属性名} ${属性名}来访问这些参数

          

    7. 在SqlMapConfig.xml中声明一下User.xml

    8. 编写测试代码

           1.创建SqlSessionFactory

           2.创建SqlSession

           3.根据映射关系调用SQL

           4.处理

           5.关闭SqlSession

    二、实例:

    使用Mybaits对User表进行CRUD

    查询:根据ID查询, 根据用户名称模糊查询

    1.创建数据库表user

    CREATE TABLE `user` (  
      
      `id` int(11) NOT NULL AUTO_INCREMENT,  
      
      `username` varchar(32) NOT NULL COMMENT '用户名称',  
      
      `birthday` date DEFAULT NULL COMMENT '生日',  
      
      `sex` varchar(1) DEFAULT NULL COMMENT '性别',  
      
      `address` varchar(256)DEFAULT NULL COMMENT '地址',  
      
      PRIMARY KEY (`id`)  
      
    )

    2.创建java工程,然后加入mybatis核心包、依赖包、数据驱动包。

     

    3.在src下创建log4j.properties如下(此步骤可以省略,主要是为打印log日志,可查看执行的sql):

    #Global logging configuration
    
    log4j.rootLogger=DEBUG,stdout
    
    #Console output...
    
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    
    log4j.appender.stdout.layout.ConversionPattern=%5p[%t]-%m%n

    4. 在src下创建mybatis核心配置文件SqlMapConfig.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>
    	<!-- 和spring整合后 environments配置将废除-->
    	<environments default="development">
    		<environment id="development">
    		<!-- 使用jdbc事务管理-->
    			<transactionManager type="JDBC" />
    		<!-- 数据库连接池-->
    			<dataSource type="POOLED">
    				<property name="driver" value="com.mysql.jdbc.Driver"/>
    				<property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8"/>
    				<property name="username" value="root"/>
    				<property name="password" value="root"/>
    			</dataSource>
    		</environment>
    	</environments>
    	<mappers>
    		<mapper resource="User.xml"/>
    	</mappers>
    </configuration>
    5. Po类作为mybatis进行sql映射使用,po类通常与数据库表对应,User.java如下:

    package com.mybatis.po;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    public class User {
    	private int id;
    	private String username;
    	private Date birthday;
    	private String sex;
    	private String address;
    	public User(){
    		super();
    	}
    	public int getId() {
    		return id;
    	}
    	public void setId(int id) {
    		this.id = id;
    	}
    	public String getUsername() {
    		return username;
    	}
    	public void setUsername(String username) {
    		this.username = username;
    	}
    	public Date getBirthday() {
    		return birthday;
    	}
    	public void setBirthday(Date birthday) {
    		this.birthday = birthday;
    	}
    	public String getSex() {
    		return sex;
    	}
    	public void setSex(String sex) {
    		this.sex = sex;
    	}
    	public String getAddress() {
    		return address;
    	}
    	public void setAddress(String address) {
    		this.address = address;
    	}
    	@Override
    	public String toString() {
    		SimpleDateFormat bir = new SimpleDateFormat("yyyy-MM-dd");
    		return "User [id=" + id + ", username=" + username + ", birthday=" + bir.format(birthday) + ", sex=" + sex + ", address="
    				+ address + "]";
    	}
    }
    

    6.在src下创建sql映射文件User.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper 
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis,org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="test">
    	<select id="findUserById" parameterType="int" resultType="com.mybatis.po.User">
    		select * from user where id = #{id}
    	</select>
    	<select id="findUserByName" parameterType="String" resultType="com.mybatis.po.User">
    		select * from user where username like '%${value}%'
    	</select>
    	<select id="addUser" parameterType="com.mybatis.po.User"  resultType="int">
    		 insert into user(username,birthday,sex,address) values(#{username},#{birthday},#{sex},#{address})
    		<!--insert into user(username,sex,address) values(#{username},#{sex},#{address}) -->
    	</select>
    	<update id="updateUserById" parameterType="com.mybatis.po.User" >
    		update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id}; 
    		<!--update user set username=#{username},sex=#{sex},address=#{address} where id=#{id}; -->
    	</update>
    	<delete id="deleteUserById" parameterType="int" >
    		delete from user where id=#{id};
    	</delete>
    </mapper>
    7.在SqlMapConfig.xml中声明一下User.xml:
            <mappers>
    		<mapper resource="User.xml"/>
    	</mappers>
    8. 编写测试代码 MainTest.java

    package com.mybatis.test;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.text.DateFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.List;
    import java.util.Scanner;
    
    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.mybatis.po.User;
    
    public class MainTest {
    	@Test
    	//根据ID查询
    	public void findUserById() throws IOException{
    		String resource="SqlMapConfig.xml";
    		InputStream inputStream=Resources.getResourceAsStream(resource);
    		SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream);
    		SqlSession openSession=factory.openSession();
    		Scanner sc=new Scanner(System.in);
    		System.out.println("请输入id:");
    		int id=sc.nextInt();
    		User user=openSession.selectOne("test.findUserById", id);
    		System.out.println(user);
    		openSession.close();
    	}
    	@Test
    	//用户名关键字查询
    	public void findUserByName() throws IOException{
    		String resource="SqlMapConfig.xml";
    		InputStream inputStream=Resources.getResourceAsStream(resource);
    		SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream);
    		SqlSession openSession=factory.openSession();
    		System.out.println("请输入用户名关键字:");
    		Scanner sc=new Scanner(System.in);
    		String username=sc.next();
    		List<User>list=openSession.selectList("test.findUserByName",username);
    		System.out.println(list);
    		openSession.close();
    	}
    	@Test
    	//添加用户
    	public void addUser() throws IOException, ParseException{
    		String resource="SqlMapConfig.xml";
    		InputStream inputStream=Resources.getResourceAsStream(resource);
    		SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream);
    		SqlSession openSession=factory.openSession();
    		Scanner sc=new Scanner(System.in);
    		System.out.println("请输入用户名:");
    		String username=sc.next();
    		System.out.println("请输入生日:");
    		String birthday1=sc.next();
    		DateFormat format=new SimpleDateFormat("yyyy-MM-dd");
    		Date birthday=format.parse(birthday1);
    		System.out.println("请输入性别:");
    		String sex=sc.next();
    		System.out.println("请输入地址:");
    		String address=sc.next();
    		User user=new User();
    		user.setUsername(username);
    		user.setBirthday(birthday);
    		user.setSex(sex);
    		user.setAddress(address);
    		user.getId();
    		int result=openSession.insert("test.addUser", user);
    		openSession.commit();
    		System.out.println(result);
    		openSession.close();
    	}
    	@Test
    	//修改用户信息
    	public void updateUserById() throws IOException{
    		String resource="SqlMapConfig.xml";
    		InputStream inputStream=Resources.getResourceAsStream(resource);
    		SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream);
    		SqlSession openSession=factory.openSession();
    		Scanner sc=new Scanner(System.in);
    		System.out.println("请输入id:");
    		int id=sc.nextInt();
    		User user=openSession.selectOne("test.findUserById", id);
    		System.out.println("请输入用户名:");
    		String username=sc.next();
    		System.out.println("请输入生日:");
    		String birthday1=sc.next();
    		DateFormat format=new SimpleDateFormat("yyyy-MM-dd");
    		Date birthday = null;
    		try {
    			birthday = format.parse(birthday1);
    		} catch (ParseException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		System.out.println("请输入性别:");
    		String sex=sc.next();
    		System.out.println("请输入地址:");
    		String address=sc.next();
    		user.setUsername(username);
    	    user.setBirthday(birthday);
    		user.setSex(sex);
    		user.setAddress(address);	
    		user.getId();
    		openSession.update("test.updateUserById", user);
    		openSession.commit();
    		System.out.println(user);
    		openSession.close();
    	}
    	@Test
    	//根据ID删除用户
    	public void deleteUserById() throws IOException{
    		String resource="SqlMapConfig.xml";
    		InputStream inputStream=Resources.getResourceAsStream(resource);
    		SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(inputStream);
    		SqlSession openSession=factory.openSession();
    		System.out.println("请输入id:");
    		Scanner sc=new Scanner(System.in);
    		int id=sc.nextInt();
    		openSession.delete("test.deleteUserById", id);
    		openSession.commit();
    		openSession.close();
    	}
    	
    	public static void main(String[] args) throws IOException, ParseException{
    		while(true){
    		System.out.println("***************************************************");
    		System.out.println("1.ID查询  2.用户名关键字查询  3.添加用户  4.修改用户信息  5.删除用户  6.退出");
    		System.out.println("***************************************************");
    		MainTest mainTest=new MainTest();
    		Scanner sc=new Scanner(System.in);
    		System.out.println("请输入要进行操作的序号:");
    		int num=sc.nextInt();
    		switch (num) {
    		case 1:
    				mainTest.findUserById();
    		        break;
    		case 2:
    				mainTest.findUserByName();
    				break;
    		case 3:
    				mainTest.addUser();
    				break;
    		case 4:
    			mainTest.updateUserById();
    			break;
    		case 5:mainTest.deleteUserById();
    		    break;
    		case 6:System.out.println("感谢使用!");
    			return;
    		default:
    			System.out.println("输入有误");
    			break;
    		}
    	}
    	}
    }
    
    9.项目结构:

  • 相关阅读:
    【linux基础】linux系统日志设置相关记录
    【linux基础】mount: unknown filesystem type 'exfat'
    [c++]float assign
    第6章 移动语义和enable_if:6.1 完美转发
    第5章 技巧性基础:5.7 模板模板参数
    第5章 技巧性基础:5.6 变量模板
    第5章 技巧性基础:5.4 原生数组和字符串字面量的模板
    第5章 技巧性基础:5.3 this->的使用
    第5章 技巧性基础:5.2 零初始化
    第5章 技巧性基础:5.1 关键字typename
  • 原文地址:https://www.cnblogs.com/mlan/p/11060390.html
Copyright © 2011-2022 走看看