百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

Springi和Mybatis整合小案例(spring和mybatis整合步骤)

toyiye 2024-08-24 00:38 5 浏览 0 评论

一案例效果展示:

登录模块:

用户注册模块:

二项目功能介绍:

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

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

如图:

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

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

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

图一:

图二:

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

(2)注册系统功能介绍

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

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

三:项目目录结构

 四、代码

(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>
 
 <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开发的简单程序

相关推荐

# Python 3 # Python 3字典Dictionary(1)

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中,格式如...

Python第八课:数据类型中的字典及其函数与方法

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值...

Python中字典详解(python 中字典)

字典是Python中使用键进行索引的重要数据结构。它们是无序的项序列(键值对),这意味着顺序不被保留。键是不可变的。与列表一样,字典的值可以保存异构数据,即整数、浮点、字符串、NaN、布尔值、列表、数...

Python3.9又更新了:dict内置新功能,正式版十月见面

机器之心报道参与:一鸣、JaminPython3.8的热乎劲还没过去,Python就又双叒叕要更新了。近日,3.9版本的第四个alpha版已经开源。从文档中,我们可以看到官方透露的对dic...

Python3 基本数据类型详解(python三种基本数据类型)

文章来源:加米谷大数据Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在Python中,变量就是变量,它没有类型,我们所说的"类型"是变...

一文掌握Python的字典(python字典用法大全)

字典是Python中最强大、最灵活的内置数据结构之一。它们允许存储键值对,从而实现高效的数据检索、操作和组织。本文深入探讨了字典,涵盖了它们的创建、操作和高级用法,以帮助中级Python开发...

超级完整|Python字典详解(python字典的方法或操作)

一、字典概述01字典的格式Python字典是一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。字典的每个键值key=>value对用冒号:分割,每个对之间用逗号,...

Python3.9版本新特性:字典合并操作的详细解读

处于测试阶段的Python3.9版本中有一个新特性:我们在使用Python字典时,将能够编写出更可读、更紧凑的代码啦!Python版本你现在使用哪种版本的Python?3.7分?3.5分?还是2.7...

python 自学,字典3(一些例子)(python字典有哪些基本操作)

例子11;如何批量复制字典里的内容2;如何批量修改字典的内容3;如何批量修改字典里某些指定的内容...

Python3.9中的字典合并和更新,几乎影响了所有Python程序员

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

Python3大字典:《Python3自学速查手册.pdf》限时下载中

最近有人会想了,2022了,想学Python晚不晚,学习python有前途吗?IT行业行业薪资高,发展前景好,是很多求职群里严重的香饽饽,而要进入这个高薪行业,也不是那么轻而易举的,拿信工专业的大学生...

python学习——字典(python字典基本操作)

字典Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。但它是无序的,包含的元素个数不限,值...

324页清华教授撰写【Python 3 菜鸟查询手册】火了,小白入门字典

如何入门学习python...

Python3.9中的字典合并和更新,了解一下

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

python3基础之字典(python中字典的基本操作)

字典和列表一样,也是python内置的一种数据结构。字典的结构如下图:列表用中括号[]把元素包起来,而字典是用大括号{}把元素包起来,只不过字典的每一个元素都包含键和值两部分。键和值是一一对应的...

取消回复欢迎 发表评论:

请填写验证码