您的位置:首页 > 其它

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

2017-10-09 20:00 465 查看

一、配置过程:

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
4000
>
<!-- 和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.项目结构:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: