欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Springi和Mybatis整合小案例

程序员文章站 2022-05-29 23:49:23
一案例效果展示: 登录模块: 用户注册模块: 二项目功能介绍: (1)登录系统功能介绍: 1)如果用户未输入用户名和密码,直接点击“”确认“按钮”,会提示用户名和密码不能为空; 如图: 2)如果用户未输入用户名,用户名输入框失去焦点,会提示用户不能为空 3)如果用户未输入密码,密码输入框失去焦点,会 ......

 

一案例效果展示:

登录模块:

Springi和Mybatis整合小案例

 

用户注册模块:

Springi和Mybatis整合小案例

 

二项目功能介绍:

(1)登录系统功能介绍:

 1)如果用户未输入用户名和密码,直接点击“”确认“按钮”,会提示用户名和密码不能为空;

  如图:

  Springi和Mybatis整合小案例

 

  2)如果用户未输入用户名,用户名输入框失去焦点,会提示用户不能为空

   Springi和Mybatis整合小案例

  3)如果用户未输入密码,密码输入框失去焦点,会提示密码不能为空

  Springi和Mybatis整合小案例

 

  4)如果用户输入了用户名和密码,会弹出登录中的提示框,但用户名或密码错误,系统会在控制台输出登录失败:

  图一:

  Springi和Mybatis整合小案例    

     图二:

  Springi和Mybatis整合小案例

 

  5)如果用户名和密码正确,会弹出登录提示框,并在控制台输出登录成功.

  Springi和Mybatis整合小案例

  

  (2)注册系统功能介绍

  1)注册窗体的输入框添加的焦点监听器,会约束用户的输入。

  Springi和Mybatis整合小案例

  2)如果用户输入的信息合法,则向数据库插入一条记录。

    三:项目目录结构

  Springi和Mybatis整合小案例

  四、代码

  (1)在com.chenjiawei.frame包下的类文件:

  1)登录窗体代码:

package com.chenjiawei.frame;import java.awt.FlowLayout;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;

import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.chenjiawei.service.UserService;

/**
* 登录窗体
* @author SS
*
*/
public class LoginFrame extends JFrame implements ActionListener,FocusListener,Runnable{
private JTextField TextUsername,TextPassword;
private JLabel UsernameErrorTipe,PasswordErrorTipe;
private JButton regist,login;
private Boolean canLogin=false;
private Thread thread;
private String username;
private String password;
private LoginTipeFrame ltf;


public LoginFrame(){
init();
setVisible(true);//设置窗体可视化
setTitle("登录"); //设置标题
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置窗体的关闭操作
setBounds(500, 200, 600, 500);
thread=new Thread(this);

}

/**
* 初始化窗体内部控件
*/
private void init(){
Box box1 =Box.createHorizontalBox(); //创建用户名水平盒子
Box box2 =Box.createHorizontalBox(); //创建密码水平盒子
Box box3 =Box.createHorizontalBox(); //创建登录或取消水平盒子
Box box=Box.createVerticalBox(); //创建垂直盒子

JLabel LabUsername=new JLabel("用户名:");
TextUsername=new JTextField(10);
UsernameErrorTipe=new JLabel("用户名不存在");
UsernameErrorTipe.setVisible(false);
TextUsername.addFocusListener(this); //添加焦点事件

JLabel LabPassword=new JLabel("密 码:");
TextPassword=new JTextField(10);
PasswordErrorTipe=new JLabel("密 码 错 误 ");
PasswordErrorTipe.setVisible(false);
TextPassword.addFocusListener(this); //添加焦点事件


regist=new JButton("注册");
login=new JButton("登录");
regist.addActionListener(this);
login.addActionListener(this);


//将对于控件添加到盒子里面
box1.add(LabUsername);
box1.add(Box.createHorizontalStrut(10));
box1.add(TextUsername);
box1.add(Box.createHorizontalStrut(10));
box1.add(UsernameErrorTipe);

box2.add(LabPassword);
box2.add(Box.createHorizontalStrut(10));
box2.add(TextPassword);
box2.add(Box.createHorizontalStrut(10));
box2.add(PasswordErrorTipe);

box3.add(regist);
box3.add(Box.createHorizontalStrut(10));
box3.add(login);

box.add(Box.createVerticalStrut(150));
box.add(box1);
box.add(Box.createVerticalStrut(10));
box.add(box2);
box.add(Box.createVerticalStrut(10));
box.add(box3);

this.setLayout(new FlowLayout()); //设置布局
this.add(box);



}

/**
* 给登录和注册按钮添加事件处理程序
*/
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == login){
System.out.println("登录");
username=TextUsername.getText().trim();
password=TextPassword.getText().trim();


if(username.trim() !=null && !username.trim().equals("")
&& password.trim() !=null && !password.equals("")){
canLogin=true;
thread.start(); //开启线程
}
if(canLogin){
System.out.println("登录........");
ltf=new LoginTipeFrame(); //实例化登录提示窗体
}else{
UsernameErrorTipe.setText("用户名不能为空");
PasswordErrorTipe.setText("密码不能为空");
UsernameErrorTipe.setVisible(true);
PasswordErrorTipe.setVisible(true);
}

}else if(e.getSource()==regist){
new RegiesrFrame();
this.dispose(); //关闭当前窗体
}

}


/**
* 给用户输入框和密码输入框添加事件处理程序
*/
@Override
public void focusGained(FocusEvent e) {
if(e.getSource()==TextUsername){
UsernameErrorTipe.setText("");
UsernameErrorTipe.setVisible(false);
}else if(e.getSource()==TextPassword){
PasswordErrorTipe.setText("");
PasswordErrorTipe.setVisible(false);
}
}

@Override
public void focusLost(FocusEvent e) {
if(e.getSource()==TextUsername){
if(TextUsername.getText().trim() ==null ||
TextUsername.getText().trim().equals("")){

UsernameErrorTipe.setText("用户名不能为空");
UsernameErrorTipe.setVisible(true);
canLogin=false;
}
}else if(e.getSource()==TextPassword){
if(TextPassword.getText().trim() == null ||
TextPassword.getText().trim().equals("")){
PasswordErrorTipe.setText("密码不能为空");
PasswordErrorTipe.setVisible(true);
canLogin=false;
}
}

}

@Override
public void run() {

try {
Thread.sleep(200);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
UserService us=applicationContext.getBean(UserService.class);
boolean isSuccessLogin=us.doLogin(username, password);

if(isSuccessLogin){
System.out.println("登录成功");
ltf.dispose(); //关闭登录提示窗体
}else{
System.out.println("登录失败");
ltf.dispose(); //关闭登录提示窗体
}

}

}

 2)注册窗体

package com.chenjiawei.frame;

import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;

import javax.swing.Box;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.chenjiawei.po.User;
import com.chenjiawei.service.UserService;
/**
* 注册窗体
* @author SS
*
*/
public class RegiesrFrame extends JFrame implements ActionListener,FocusListener{

private JTextField TextUsername,TextPassword,TextConfimPassword,TextIDCard;
private JLabel UsernameErrorTipe,PasswordErrorTipe,ConfimPasswordErrorTipe,IDCardErrorTipe;
private JRadioButton boy,gril,China,HongKong,Others;
private JButton canace,regiest;
private Boolean isUsername=false,isPassword=false,isConfimPassword=false,isIDCard=false; //判断用户名、密码、确认密码、身份证是否可以注册

public RegiesrFrame(){
init();
setBounds(500, 200, 600, 500);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setTitle("注册");
}

/**
* 初始化控件
*/
private void init(){
Box box1=Box.createHorizontalBox();
Box box2=Box.createHorizontalBox();
Box box3=Box.createHorizontalBox();
Box box4=Box.createHorizontalBox();
Box box5=Box.createHorizontalBox();
Box box6=Box.createHorizontalBox();
Box box7=Box.createHorizontalBox();
Box box=Box.createVerticalBox();

JLabel LabUsername=new JLabel("用 户 名:");
TextUsername=new JTextField(10);
UsernameErrorTipe=new JLabel(" 用户名不合法");
UsernameErrorTipe.setVisible(false);
TextUsername.addFocusListener(this); //给输入框添加焦点监听器

JLabel LabPassword=new JLabel("密 码:");
TextPassword=new JTextField(10);
PasswordErrorTipe=new JLabel(" 密码不合法");
PasswordErrorTipe.setVisible(false);
TextPassword.addFocusListener(this); //给输入框添加焦点监听器

JLabel LabConfimPassword=new JLabel("确认密码:");
TextConfimPassword=new JTextField(10);
ConfimPasswordErrorTipe=new JLabel("两次密码不一致");
ConfimPasswordErrorTipe.setVisible(false);
TextConfimPassword.addFocusListener(this); //给输入框添加焦点监听器

JLabel Sex=new JLabel("性 别:");

boy=new JRadioButton(" 男 ");
gril=new JRadioButton(" 女 ");

ButtonGroup group1=new ButtonGroup();
group1.add(boy);
group1.add(gril);

JLabel LabIDCardType=new JLabel("身份证类型: ");

China=new JRadioButton("大 陆");
HongKong=new JRadioButton("港 澳");
Others=new JRadioButton("其 他 ");

ButtonGroup group2=new ButtonGroup();
group2.add(China);
group2.add(HongKong);
group2.add(Others);

JLabel LabIDCard=new JLabel("身 份 证:");
TextIDCard=new JTextField(10);
IDCardErrorTipe=new JLabel(" 身份证不合法");
IDCardErrorTipe.setVisible(false);
TextIDCard.addFocusListener(this); //给输入框添加焦点监听器

canace=new JButton("取消");
regiest=new JButton("注册");

canace.addActionListener(this);
regiest.addActionListener(this);


box1.add(LabUsername);
box1.add(Box.createHorizontalStrut(10));
box1.add(TextUsername);
box1.add(Box.createHorizontalStrut(10));
box1.add(UsernameErrorTipe);


box2.add(LabPassword);
box2.add(Box.createHorizontalStrut(10));
box2.add(TextPassword);
box2.add(Box.createHorizontalStrut(10));
box2.add(PasswordErrorTipe);

box3.add(LabConfimPassword);
box3.add(Box.createHorizontalStrut(10));
box3.add(TextConfimPassword);
box3.add(Box.createHorizontalStrut(10));
box3.add(ConfimPasswordErrorTipe);

box4.add(Sex);
box4.add(Box.createHorizontalStrut(10));
box4.add(boy);
box4.add(Box.createHorizontalStrut(10));
box4.add(gril);

box5.add(LabIDCardType);
box5.add(Box.createHorizontalStrut(10));
box5.add(China);
box5.add(Box.createHorizontalStrut(10));
box5.add(HongKong);
box5.add(Box.createHorizontalStrut(10));
box5.add(Others);

box6.add(LabIDCard);
box6.add(Box.createHorizontalStrut(10));
box6.add(TextIDCard);
box6.add(Box.createHorizontalStrut(10));
box6.add(IDCardErrorTipe);

box7.add(canace);
box7.add(Box.createHorizontalStrut(30));
box7.add(regiest);


box.add(Box.createVerticalStrut(50));
box.add(box1);
box.add(Box.createVerticalStrut(10));
box.add(box2);
box.add(Box.createVerticalStrut(10));
box.add(box3);
box.add(Box.createVerticalStrut(10));
box.add(box4);
box.add(Box.createVerticalStrut(10));
box.add(box5);
box.add(Box.createVerticalStrut(10));
box.add(box6);
box.add(Box.createVerticalStrut(10));
box.add(box7);

this.setLayout(new FlowLayout()); //设置布局
this.add(box);



}
/**
* 给注册和取消添加按钮监听器
*/
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == regiest){
//&& isPassword && isConfimPassword && isIDCard
if(isUsername && isPassword && isConfimPassword && isIDCard){
String username=TextUsername.getText().trim();
String password=TextPassword.getText().trim();
String sex="男";
if(gril.isSelected()){
sex="女";
}

String idCardType="大陆";
if(HongKong.isSelected()){
idCardType="港澳";
}else if(Others.isSelected()){
idCardType="其他";
}
String idCard=TextIDCard.getText().trim();

ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
UserService us=applicationContext.getBean(UserService.class);

//封装User数据
User user=new User();
user.setUsername(username);
user.setPassword(password);
user.setSex(sex);
user.setIdCardType(idCardType);
user.setIdCard(idCard);
System.out.println(user);
//添加用户数据
boolean doRegiest=us.doRegiest(user);
if(doRegiest){
dispose();
new ConfimFrame("注册成功",1);
}else{
new ConfimFrame("注册失败",0);
}
}else{
new ConfimFrame("信息不完善,请填写信息",0);
}
}

}

/**
* 给输入框获取焦点的回调函数
* @param e
*/
@Override
public void focusGained(FocusEvent e) {

if(e.getSource() == TextUsername){
UsernameErrorTipe.setVisible(false);
}else if(e.getSource() == TextPassword){
PasswordErrorTipe.setVisible(false);
}else if(e.getSource() == TextConfimPassword){
ConfimPasswordErrorTipe.setVisible(false);
}else if(e.getSource() == TextIDCard){
IDCardErrorTipe.setVisible(false);
}

}
/**
* 输入框失去焦点的回调函数
*/
@Override
public void focusLost(FocusEvent e) {

if(e.getSource() == TextUsername){
String username =TextUsername.getText().trim(); //获取输入框文本内容
if(TextUsername.getText().trim() == null
|| TextUsername.getText().trim().equals("")){
UsernameErrorTipe.setText("用户名不能为空");
UsernameErrorTipe.setVisible(true);
isUsername=false; //用户名不合法
}else{
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
UserService userService=applicationContext.getBean(UserService.class);
boolean isSameUsername=userService.isSameUsername(username);
if(isSameUsername){
UsernameErrorTipe.setText("用户名已存在");
UsernameErrorTipe.setVisible(true);
isUsername=false; //用户名不合法
}else{
UsernameErrorTipe.setText("该用户名可以注册");
UsernameErrorTipe.setVisible(true);
isUsername=true; //用户名合法
}
}
}else if(e.getSource() == TextPassword){
String password=TextPassword.getText().trim();
if(password ==null || password.equals("")){
PasswordErrorTipe.setText("密码不能为空");
PasswordErrorTipe.setVisible(true);
isPassword=false; //密码不合法
}else{
if(password.length()>=6){
PasswordErrorTipe.setText("");
PasswordErrorTipe.setVisible(false);
isPassword=true; //密码合法
}else{
PasswordErrorTipe.setText("密码长度不能小于6");
PasswordErrorTipe.setVisible(true);
isPassword=false; //密码不合法
}
}
}else if(e.getSource() == TextConfimPassword){
String password=TextPassword.getText().trim();
String ConfimPassword=TextConfimPassword.getText().trim();
if(ConfimPassword ==null || ConfimPassword.equals("")){
ConfimPasswordErrorTipe.setText("确认密码不能为空");
ConfimPasswordErrorTipe.setVisible(true);
isConfimPassword=false; //确认密码不合法
}else{
if(password.equals(ConfimPassword)){
ConfimPasswordErrorTipe.setText("");
ConfimPasswordErrorTipe.setVisible(false);
isConfimPassword=true; //确认密码合法
}else{
ConfimPasswordErrorTipe.setText("两次密码不一致");
ConfimPasswordErrorTipe.setVisible(true);
isConfimPassword=false; //确认密码不合法
}
}


}else if(e.getSource() == TextIDCard){

String idCard=TextIDCard.getText().trim();
if(idCard.length()==18){
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
UserService userService=applicationContext.getBean(UserService.class);
boolean isSameIdCard= userService.isSameIdCard(idCard);
if(!isSameIdCard){
IDCardErrorTipe.setVisible(false);
isIDCard=true; //身份合法
}else{
IDCardErrorTipe.setText("身份证已存在");
IDCardErrorTipe.setVisible(true);
isIDCard=false;//身份合法
}


}else{
IDCardErrorTipe.setVisible(true);
isIDCard=false;//身份合法
}

}

}

}

 

 3)登录提示窗体

  

package com.chenjiawei.frame;

import java.awt.Frame;

import javax.swing.Box;
import javax.swing.JFrame;
import javax.swing.JLabel;

import org.apache.tools.ant.taskdefs.Sleep;

import aj.org.objectweb.asm.Handle;

/**
* 登录提示窗体
* @author SS
*
*/
public class LoginTipeFrame extends JFrame implements Runnable{

private JLabel tipe;

private String msg="登录";

private Thread thread;

public LoginTipeFrame(){
init();
setVisible(true);//设置窗体可视化
setTitle("登录状态提示框"); //设置标题
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //设置窗体的关闭操作
setBounds(680, 360, 200, 200);
thread=new Thread(this);
thread.start();
}

/**
* 初始化控件
*/
private void init(){
Box box=Box.createVerticalBox();
Box box1=Box.createHorizontalBox();
tipe=new JLabel(msg);
box1.add(tipe);
box.add(Box.createVerticalStrut(60));
box.add(box1);
this.add(box);

}

@Override
public void run() {
int n=1;
while(n<=3){

for(int i=1;i<=5;i++){
try {
thread.sleep(200);
msg+=".";
tipe.setText(msg);

} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
msg="登录";
n++;
}
}

}

  (2)在com.chenjiawei.mapper包下的类文件

  1)数据库操作接口类UserMapper:

package com.chenjiawei.mapper;

import com.chenjiawei.po.User;

public interface UserMapper {

  public User findUserByUsernameAndPassword(User user);

  public User findUserByUsername(String username);

  public int insertUser(User user);

  public User findUserByIdCard(String idCard);

}

  (2)数据库映射文件:

<?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="com.chenjiawei.mapper.UserMapper">

<!--登录查询 -->
<select id="findUserByUsernameAndPassword" parameterType="user" resultType="user">
select * from tb_user where username=#{username} and password=#{password}
</select>

<!-- 用户名是否已存在 -->
<select id="findUserByUsername" parameterType="String" resultType="user">
select * from tb_user where username=#{username}
</select>

<!--添加用户信息 -->
<insert id="insertUser" parameterType="user">
insert into tb_user(username,password,sex,idCardType,idCard)
values(#{username},#{password},#{sex},#{idCardType},#{idCard})
</insert>

<!--查询身份证信息是否已存在 -->
<select id="findUserByIdCard" parameterType="String" resultType="user">
select * from tb_user where idCard=#{idCard}
</select>


</mapper>

  

  (3)在com.chenjiawei.po包下的类文件

  1)用户实体类

package com.chenjiawei.po;

/**
* 用户实体类
* @author SS
*
*/

public class User {

private String username;

private String password;

private String sex;

private String idCardType;

private String idCard;

public String getUsername() {
return username;
}

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

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public String getSex() {
return sex;
}

public void setSex(String sex) {
this.sex = sex;
}

public String getIdCardType() {
return idCardType;
}

public void setIdCardType(String idCardType) {
this.idCardType = idCardType;
}

public String getIdCard() {
return idCard;
}

public void setIdCard(String idCard) {
this.idCard = idCard;
}

@Override
public String toString() {
return "User [username=" + username + ", password=" + password + ", sex=" + sex + ", idCardType=" + idCardType
+ ", idCard=" + idCard + "]";
}


}

  (4)在com.chenjiawei.service包下的类文件

  (1)UserService

package com.chenjiawei.service;

import com.chenjiawei.po.User;

public interface UserService {

/**
* 登录系统的操作方法
* 传入username 用户名
* password 密码
* 返回 boolean
* true 为登录成功
* false 为登录失败
*/
public boolean doLogin(String username,String password);

/**
* 判断用户是否已存在
* 传入参数 username 用户名
* 返回值 boolean true为用户名已存在,false为用户名不存在
*/
public boolean isSameUsername(String username);

/**
* 判断用户注册是否成功
* 传入参数:user 用户类
* 返回boolean 若为true注册成功,若为false注册失败
*/
public boolean doRegiest(User user);

/**
* 判断身份证是否已存在
* 传入参数:要查询的身份证信息
* 返回boolean true为已存在,false不存在
*/
public boolean isSameIdCard(String idCard);

}

  (5)在com.chenjiawei.service.impl包下的类文件

   1)UserServiceImpl

package com.chenjiawei.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.chenjiawei.mapper.UserMapper;
import com.chenjiawei.po.User;
import com.chenjiawei.service.UserService;


@Service
public class UserServiceImpl implements UserService{

@Autowired
private UserMapper um;

/**
* 登录系统的操作方法
* 传入username 用户名
* password 密码
* 返回 boolean
* true 为登录成功
* false 为登录失败
*/
@Override
public boolean doLogin(String username, String password) {

if(!username.trim().equals("") && username !=null
&& !password.trim().equals("") && password !=null){
User user=new User();
user.setUsername(username);
user.setPassword(password);
User user1=um.findUserByUsernameAndPassword(user);
if(user1!=null){
System.out.println(user1);
return true;
}else{
return false;
}
}else{
return false;
}
}

/**
* 判断用户是否已存在
* 传入参数 username 用户名
* 返回值 boolean true为用户名已存在,false为用户名不存在
*/
@Override
public boolean isSameUsername(String username) {
User user=um.findUserByUsername(username);
if(user !=null){
return true;
}else{
return false;
}

}

/**
* 判断用户注册是否成功
* 传入参数:user 用户类
* 返回boolean 若为true注册成功,若为false注册失败
*/
@Override
public boolean doRegiest(User user) {
if(user !=null){
int i=um.insertUser(user);
if(i>0){
return true;
}else{
return false;
}
}else{
return false;
}

}


/**
* 判断身份证是否已存在
* 传入参数:要查询的身份证信息
* 返回boolean true为已存在,false不存在
*/
@Override
public boolean isSameIdCard(String idCard) {

User user=um.findUserByIdCard(idCard);
if(user ==null){
return false;
}else{
return true;
}
}

}

  (6)在com.chenjiawei.test包下的文件

  MyTest该类是启动程序的主类 

package com.chenjiawei.test;

import com.chenjiawei.frame.LoginFrame;

public class MyTest {

public static void main(String[] args) {
new LoginFrame();
}

}

 

  (7)spring的配置文件applicationContext.xml

  

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"

xmlns:context="http://www.springframework.org/schema/context"

xmlns:tx="http://www.springframework.org/schema/tx"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd

http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd

http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.3.xsd
">

<context:property-placeholder location="db.properties"/>

<!-- 定于数据源 -->

<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>

<!-- 创建sqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />

<property name="configLocation" value="mybatis-config.xml" />
</bean>

<!-- 配置Mapper自动装配-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.chenjiawei.mapper"/>
</bean>

<context:component-scan base-package="com.chenjiawei.service" />


</beans>

 

  (8)数据库连接池属性配置db.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring_mybatis_test
jdbc.username=root
jdbc.password=123456

  

  (9)mybatis日志文件

# Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.com.chenjiawei=DEBUG
# 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

 

  (10)mybaits的配置文件mybatis-config.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>

<!--开启别名 -->
<typeAliases>
<package name="com.chenjiawei.po"/>
</typeAliases>


</configuration>

 

 

以上是笔者开发结合spring和mybatis开发的简单程序,笔者知识有限,