我的第一个MVC项目
p
ackage com.sdjt.dao; import java.util.ArrayList;
import java.util.List; import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
import org.junit.Test; import com.sdjt.utils.C3Utils; /**
* 实现操作增删改查
*
* @author lx
*
*/ public class PersonDaoJdb {
/*
* 实现查询
*/ public List<Object[]> query(String id, String name, Integer age, String sex) {
List<Object[]> list = new ArrayList<>();
try { String sql = "select p_id id,p_name name,p_age age,"
+ "(case sex when '1' then '男' else '女' end) sex"
+ " from person where 1=1"; List<Object> param = new ArrayList<>();
if (id != null && !id.trim().equals("")) {
sql += " and p_id like ?";
param.add("%" + id.trim() + "%");
}
if (name != null && !name.trim().equals("")) {
sql += " and p_name like ?";
param.add("%" + name.trim() + "%");
}
if (age != null) {
sql += " and p_age=?";
param.add(age);
}
if (sex != null && !sex.trim().equals("")) {
sql += " and sex=?";
param.add(sex.trim());
}
QueryRunner run = new QueryRunner(C3Utils.getDs()); list = run.query(sql, new ArrayListHandler(), param.toArray());
System.err.println("sql is:"+sql);
} catch (Exception e) {
throw new RuntimeException(e);
}
return list;
} /**
* 实现保存
*/ public void save(String id, String name,String age, String sex) { try { String sql = "insert into person values(?,?,?,?)";
QueryRunner run = new QueryRunner(C3Utils.getDs());
run.update(sql, id,name,age,sex); } catch (Exception e) {
e.printStackTrace();
} } public void delete(String id, String name,String age, String sex) { try {
String sql = "delete from person where ";
if (id != null && !id.trim().equals("")) {
sql += "p_id= ?";
QueryRunner run = new QueryRunner(C3Utils.getDs());
run.update(sql,id);
System.err.println("删除成功"); } else {
System.err.println("删除出错"); } } catch (Exception e) {
e.printStackTrace();
} } } package com.sdjt.frame; import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Label; import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.ListSelectionModel;
import javax.swing.table.DefaultTableModel; import com.sdjt.person.Action.PersonAction;
import com.sdjt.utils.MyModelFrame; public class Frame extends JFrame { /**
*
*/
private static final long serialVersionUID = 1L;
Label lable1 = new Label("编号");
Label lable2 = new Label("姓名");
Label lable3 = new Label("年龄");
Label lable4 = new Label("性别");
JButton save = new JButton("保存");
JButton delete = new JButton("删除");
JTextField idtext = new JTextField(5);
JTextField nametext = new JTextField(5);
JTextField agetext = new JTextField(5);
JTable table;
DefaultTableModel dt;
// 下拉框
JComboBox<String> sextext = new JComboBox<String>(new String[] { "", "男",
"女" }); public Frame() {
// 控制层 接受用户信息
PersonAction pa = new PersonAction(this);
// 获取当前jframe上的对象
Container con = getContentPane();
con.setLayout(new BorderLayout());
JPanel jp = new JPanel(new FlowLayout(FlowLayout.LEFT));
jp.add(lable1);
jp.add(idtext);
jp.add(lable2);
jp.add(nametext);
jp.add(lable3);
jp.add(agetext);
jp.add(lable4);
jp.add(sextext);
JButton query = new JButton("查询");
query.setActionCommand("query");
jp.add(query);
query.addActionListener(pa);
save.setActionCommand("save");
jp.add(save);
save.addActionListener(pa); delete.setActionCommand("delete");
jp.add(delete);
delete.addActionListener(pa); // 实例化表格数据+表头
dt = new MyModelFrame(null, new String[] { "编号", "name", "age", "sex" });
con.add(jp, BorderLayout.NORTH);
table = new JTable(dt);
// //设置单行选择
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
// 将t放在中间用JScrollPanel设置table可以带上下滚动条
con.add(new JScrollPane(table), BorderLayout.CENTER); // 监听窗口关闭按钮
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(300, 300, 700, 300);
setVisible(true);
} public JTable getTable() {
return table;
} public JTextField getIdtext() {
return idtext;
} public JTextField getNametext() {
return nametext;
} public JTextField getAgetext() {
return agetext;
} public JComboBox<String> getSextext() {
return sextext;
} public static void main(String[] args) {
new Frame();
} public DefaultTableModel getDt() {
return dt;
} }
package com.sdjt.person.Action; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import javax.swing.JOptionPane;
import com.sdjt.frame.Frame;
import com.sdjt.person.serverce.PersonServer; public class PersonAction implements ActionListener { // 声明serverce
private PersonServer service = new PersonServer();
private Frame fr; public PersonAction(Frame fr) {
this.fr = fr;
} @Override
public void actionPerformed(ActionEvent e) { if (e.getActionCommand().equals("query")) { System.err.println("query..");
// 删除原有的
int rows = fr.getDt().getRowCount();
for (int i = 0; i < rows; i++) {
fr.getDt().removeRow(0); } // 查询
String id = fr.getIdtext().getText();
String name = fr.getNametext().getText();
String age = fr.getAgetext().getText();
String sex = fr.getSextext().getSelectedItem().toString(); if (sex.equals("男")) {
sex = "1"; } else if (sex.equals("女")) {
sex = "0"; } Integer _age = age.equals("") ? null : Integer.valueOf(age);
System.err.println(id + "," + name + "," + age + "," + sex); // 调用serverce // List<Object[]> list = service.query(id, name, _age, sex);
List<Object[]> list = service.query(id, name, _age, sex);
for (Object[] oo : list) {
fr.getDt().addRow(oo);
System.err.println("添加成功"); } } else if (e.getActionCommand().equals("save")) { // 获取数据
String id = fr.getIdtext().getText();
String name = fr.getNametext().getText();
String age = fr.getAgetext().getText();
String sex = fr.getSextext().getSelectedItem().toString();
if (id == null || id.trim().equals("")) {
JOptionPane.showMessageDialog(fr, "必须输入编号");
return;
}
if (sex == null || sex.trim().equals("")) {
JOptionPane.showMessageDialog(fr, "必须输入性别");
return;
}
// 调用保存 service.save(id, name, age, sex);
// 保存成功后
fr.getDt().addRow(new String[] { id, name, age, sex });
System.err.println("baocn"); } else if (e.getActionCommand().equals("delete")) {
// String id = fr.getIdtext().getText();
String name = fr.getNametext().getText();
String age = fr.getAgetext().getText();
String sex = fr.getSextext().getSelectedItem().toString();
int row = fr.getTable().getSelectedRow();
if (row == -1) {
JOptionPane.showMessageDialog(fr, "plz choose one row...");
return; }
String id1 = (String) fr.getDt().getValueAt(row, 0);
int a = JOptionPane.showConfirmDialog(fr, "你确定要删除" + id1 + "吗?",
"删除", JOptionPane.YES_NO_OPTION);
service.delete(id1, name, age, sex);
fr.getDt().addRow(new String[] { id1, "已经被删除" });
// System.err.println("--" + a);
// Integer _age = age.equals("") ? null : Integer.valueOf(age);
// List<Object[]> list = service.query(id1, name, _age, sex);
// for (Object[] oo : list) {
// fr.getDt().addRow(oo);
// System.err.println("添加成功");
//
// } } }
}
package com.sdjt.person.serverce; import java.util.List; import com.sdjt.dao.PersonDaoJdb; public class PersonServer { // 声明dao 注入dao
private PersonDaoJdb dao = new PersonDaoJdb(); public List<Object[]> query(String id, String name, Integer age, String sex) {
return dao.query(id, name, age, sex); } public void save(String id, String name, String age, String sex) { sex = sex.equals("男") ? "1" : "0";
dao.save(id, name, age, sex); } public void delete(String id, String name,String age, String sex) { dao.delete(id, name, age, sex); } }
package com.sdjt.utils; import java.sql.Connection; import javax.sql.DataSource; import com.mchange.v2.c3p0.ComboPooledDataSource; public class C3Utils {
private static DataSource ds;
static{
ds=new ComboPooledDataSource(); } public static DataSource getDs() {
return ds;
} public static Connection getCon() {
Connection con = null;
try { con = ds.getConnection(); } catch (Exception e) {
e.printStackTrace();
}
return con; }
// public static void main(String[] args) {
// System.err.println(C3Utils.getCon());
// } }
package com.sdjt.utils; import javax.swing.table.DefaultTableModel; /**
* 表格模版
*
* @author lx
*
*/
public class MyModelFrame extends DefaultTableModel { public MyModelFrame(Object[][] data, Object[] header) { super(data, header);
}
//返回false不能修改数据
@Override
public boolean isCellEditable(int row, int column) {
if(row==2){
return true; }
return false;
} }
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<!-- 最多可以创建多少个statement -->
<!-- 最多可以创建多少个statement -->
<property name="maxStatements">50</property>
<!-- 最多有多少个连接 -->
<property name="maxPoolSize">4</property>
<property name="initialPoolSize">2</property>
<property name="acquireIncrement">2</property>
<property name="minPoolSize">2</property>
<!-- 连接的超时间 -->
<property name="checkoutTimeout">3000</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///abc
</property>
<property name="user">root</property>
<property name="password">1234</property>
</default-config> <!-- 配置其他的连接,用户的其他配置可以有多个 --> <named-config name="jtedu"> <property name="maxStatements">50</property>
<!-- 最多有多少个连接 -->
<property name="maxPoolSize">4</property>
<property name="initialPoolSize">2</property>
<property name="acquireIncrement">2</property>
<property name="minPoolSize">2</property>
<!-- 连接的超时间 -->
<property name="checkoutTimeout">3000</property>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql:///abc
</property>
<property name="user">root</property>
<property name="password">1234</property>
</named-config>
</c3p0-config>
我的第一个MVC项目的更多相关文章
- 1.开始第一个MVC项目
安装就不说了 1.在指定路径创建好项目文件夹之后,打开cmd,进去这个文件夹路径下 输入命令 dotnet new mvc 就会在文件夹内创建一个mvc项目 2.创建好项目之后 直接在这个路径下输入 ...
- .net core 第一个mvc项目目录结构简析
创建项目的命令 首先来认识一下创建项目可使用的各种命令,.NETCore 的命令都以 dotnet 打头,这很好理解,输入 dotnet xxx,就是执行环境变量指向的 C:\Program ...
- ASP.NET + MVC5 入门完整教程三 (上) ---第一个MVC项目
https://blog.csdn.net/qq_21419015/article/details/80420815 第一个MVC应用程序 1创建MVC项目 打开VS ,File--新建--项目,选择 ...
- 《ASP.NET MVC 5 破境之道》:第一境 ASP.Net MVC5项目初探 — 第一节:运行第一个MVC5项目
第一境 ASP.Net MVC5项目初探 — 第一节:运行第一个MVC5项目 创建一个MVC项目,是很容易的,大部分工作,VS都帮我们完成了.只需要按照如下步骤按部就班就可以了. 打开VS2017,选 ...
- 创建一个MVC解决方案,添加一个控制器后,运行程序报错:”/"未找到服务器
1.创建一个MVC项目,如图
- .NET MVC项目设置包含Areas中的页面为默认启动页
利用vs创建一个MVC项目后,一般的默认启动页是根目录下-->Controllers-->HomeController-->Index这个方法对应的页面. 我先说下创建Areas的流 ...
- Pro ASP.NET MVC –第二章 第一个MVC程序
学习一个软件开发框架的最有效的方式就是了解并使用它.在本章,你将会创建一个简单基于ASP.NET MVC Framework的数据-实体应用程序.我们会该程序划分成若干小块,每次介绍一个部分,以便你能 ...
- C#编译器优化那点事 c# 如果一个对象的值为null,那么它调用扩展方法时为甚么不报错 webAPI 控制器(Controller)太多怎么办? .NET MVC项目设置包含Areas中的页面为默认启动页 (五)Net Core使用静态文件 学习ASP.NET Core Razor 编程系列八——并发处理
C#编译器优化那点事 使用C#编写程序,给最终用户的程序,是需要使用release配置的,而release配置和debug配置,有一个关键区别,就是release的编译器优化默认是启用的.优化代码 ...
- WSL2 新建dotnet core mvc项目
我们知道dotnet sdk会有很多命令,但在我们完全不知道如何去使用哪个命令. 我们使用dotnet -h进行查看: 我们看到SDK的new命令,但是new命令又如何使用呢? 我们再次使用帮助: 可 ...
随机推荐
- linux下mysql环境支持中文配置步骤
sql脚本执行前加上: CREATE DATABASE IF NOT EXISTS mydatabase DEFAULT CHARSET utf8 COLLATE UTF8_GENERAL_CI; u ...
- ifstream中文路径问题分析
最近维护一个项目,遇到了ifstream在中文路径下打开文件失败的bug,我搜索了一下,最后整理成下文以后日后查阅. 一.问题重现 vs2008下创建一个简单win32工程. 使用ANSI编码方式:项 ...
- Fun with dynamicobject dynamic and the settings table
What came before In my previous post I discussed ways of making the settings table using Generics to ...
- [转]shell中 source命令即点空格后面再跟可执行文件的说明
这里记录的是在一个shell脚本里面使用. ./file.sh 和./file.sh 的区别,本文参考了http://www.lslnet.com/linux/dosc1/39/linux-28353 ...
- 自定义VIew基础
一.坐标 ①.通过View获取坐标,通过调用getLeft().getRight()...方法获取坐标. 1.获取到的是相对于View父控件的位置 2.指的是左上角和右下角的x,y值 3.View还提 ...
- Python学习笔记捌——面向对象高级编程
__slots__特殊变量的使用: 由于Python是动态语言,允许先编写类,然后在创建实例的时候添加属性或者方法:而__slots__特殊变量就是,限制往类里添加属性的: 在创建类的时候,使用__s ...
- find the safest road--hdu1596
find the safest road Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Ot ...
- C语言读写伯克利DB 3
gcc -o channeldb channel.c -db -Wall # -Wall参数等价于执行lint,即:进行代码的静态分析,它可以指出未初始化的变量,未使用的变量 #include < ...
- Effective Java提升Code Coverage代码涵盖率 - 就是爱Java
虽然我们已经有了测试程序,但是如何得知是否已完整测试了主程序?,透过Code Coverage代码涵盖率,我们可以快速地得知,目前系统中,有多少程序中被测试过,不考虑成本跟投资效益比,涵盖率越高,代表 ...
- Oracle case用法
1:update 时做检查使用update mw_contract set payTimes=( case else payTimes end )'; 2:select时使用 select case ...
p
ackage com.sdjt.dao;
import java.util.ArrayList;