Mybatis配置过程——增删改查实例

来源:互联网 发布:数码大师类似软件 编辑:程序博客网 时间:2024/05/28 01:35

一、配置过程:

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 configurationlog4j.rootLogger=DEBUG,stdout#Console output...log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.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;}@Overridepublic 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 blocke.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.项目结构:

原创粉丝点击