mvc架构:数据库》》》》创建数据库的映射》》》模型层》》》》控制层》》》》视图层(控制台)
第一步:在数据库中创建一个个人信息表,此步省略
第二步:创建数据库的映射,代码如下:
public class god {
private int id;
private String user_name;
private int sex;
private int age;
private Date birthday;
private String email;
private String mobile;
private String create_user;
private String update_user;
private Date create_date;
private Date update_date;
private int isdel;
public god( int id,String user_name, int sex, int age, Date birthday,
String email, String mobile, String create_user,
String update_user, int isdel) {
super();
this.id=id;
this.user_name = user_name;
this.sex = sex;
this.age = age;
this.birthday = birthday;
this.email = email;
this.mobile = mobile;
this.create_user = create_user;
this.update_user = update_user;
this.isdel = isdel;
}
public god(){
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getMobile() {
return mobile;
}
public void setMobile(String mobile) {
this.mobile = mobile;
}
public String getCreate_user() {
return create_user;
}
public void setCreate_user(String create_user) {
this.create_user = create_user;
}
public String getUpdate_user() {
return update_user;
}
public void setUpdate_user(String update_user) {
this.update_user = update_user;
}
public Date getCreate_date() {
return create_date;
}
public void setCreate_date(Date create_date) {
this.create_date = create_date;
}
public Date getUpdate_date() {
return update_date;
}
public void setUpdate_date(Date update_date) {
this.update_date = update_date;
}
public int getIsdel() {
return isdel;
}
public void setIsdel(int isdel) {
this.isdel = isdel;
}
}
第三步:模型层,分为两个类
a.第一个连接类,获取数据库的连接,代码如下:
public class connection {
private static final String url="jdbc:mysql://localhost:3306/test";
private static final String user="root";
private static final String password="";
private static Connection con=null;
static {
try{
//1.加载jdbc驱动
Class.forName("com.mysql.jdbc.Driver");
//2.获取数据库的链接
con=DriverManager.getConnection(url, user, password);
}
catch( Exception e){
e.printStackTrace();
}
}
public Connection getConnection(){
return con;
}
public static void main(String[] args) throws Exception{
//1.加载jdbc驱动
Class.forName("com.mysql.jdbc.Driver");
//2.获取数据库的链接
Connection con=DriverManager.getConnection(url, user, password);
//3.获取Statement对象
Statement st=con.createStatement();
ResultSet rs=st.executeQuery("select user_name,id,age from imooc_goddess");
while(rs.next()){
System.out.println("名字为:"+rs.getString("user_name"));
}
}
}
b.第二个类, 提供对数据库增删改查的方法,代码如下(为了方便,在操作时只更改部分的属性值):
public class model {
//模型层写上对数据库的增删改查的方法
// public void add(god g) throws Exception{
// //第一步:先获取连接
// connection c= new connection();
// Connection con= c.getConnection();
// String sql=""+
// "insert into imooc_goddess(user_name,sex,age,birthday,email,mobile,create_user,"
// + "create_date,update_user,update_date,isdel) values("
// + "?,?,?,?,?,?,?,current_date(),?,current_date(),?)";
// //预处理
// java.sql.PreparedStatement pt= con.prepareStatement(sql);
// //进行传值
// pt.setString(1, g.getUser_name());
// pt.setInt(2, g.getSex());
// pt.setInt(3, g.getAge());
// pt.setDate(4, new Date(g.getBirthday().getTime()));
// pt.setString(5, g.getEmail());
// pt.setString(6, g.getMobile());
// pt.setString(7, g.getCreate_user());
// pt.setString(8, g.getUpdate_user());
// pt.setInt(9, g.getIsdel());
// //传值后运行
// pt.execute();
// }
public void add(god g) throws Exception{
//第一步:先获取连接
connection c= new connection();
Connection con= c.getConnection();
String sql=""+
"insert into imooc_goddess(user_name,age) values("
+ "?,?)";
//预处理
java.sql.PreparedStatement pt= con.prepareStatement(sql);
//进行传值
pt.setString(1, g.getUser_name());
pt.setInt(2, g.getAge());
pt.execute();
}
public void delete(int id) throws Exception{
//第一步:先获取连接
connection c= new connection();
Connection con= c.getConnection();
String sql="delete from imooc_goddess where id=?";
//预处理
java.sql.PreparedStatement pt= con.prepareStatement(sql);
//传值
pt.setInt(1, id);
pt.execute();
}
public void update(god g) throws Exception{
//第一步:先获取连接
connection c= new connection();
Connection con= c.getConnection();
String sql=""+
"update imooc_goddess set user_name=?,age=? where id=?";
//预处理
java.sql.PreparedStatement pt= con.prepareStatement(sql);
//进行传值
pt.setString(1, g.getUser_name());
// pt.setInt(2, g.getSex());
pt.setInt(2, g.getAge());
// System.out.println("???");
// pt.setDate(4, new Date(g.getBirthday().getTime()));
// pt.setString(5, g.getEmail());
// pt.setString(6, g.getMobile());
// pt.setInt(7, g.getIsdel());
pt.setInt(3, g.getId());
//传值后运行
pt.execute();
}
//查询多个记录,返回他的集合
public List<god> query() throws Exception{
//获取连接
connection c= new connection();
Connection con=c.getConnection();
Statement st =con.createStatement();
ResultSet rs=st.executeQuery("select user_name,id,age from imooc_goddess");
god g= new god();
List<god> gods= new ArrayList<god>();
while(rs.next()){
g.setUser_name(rs.getString("user_name"));
g.setAge(rs.getInt("age"));
g.setId(rs.getInt("id"));
//添加进集合
gods.add(g);
//清空对象
g=new god();
}
return gods;
}
public List<god> query(List<Map<String, Object>> paramas) throws Exception{
//获取连接
connection c= new connection();
Connection con=c.getConnection();
//创建一个字符串
StringBuilder sb= new StringBuilder();
sb.append("select user_name,id,age from imooc_goddess where 1=1 and ");
//判断如果集合部不为空
if(paramas!=null&¶mas.size()>0){
for(int i=0;i<paramas.size();i++){
Map<String, Object> map=paramas.get(i);
//追加sql语句
sb.append( " "+map.get("name")+ " " + map.get("rela")+" "
+ map.get("values")+" "+"or"+" ");
}
sb=new StringBuilder(sb.substring(0, sb.lastIndexOf("or")));
}
Statement st =con.createStatement();
ResultSet rs=st.executeQuery(sb.toString());
god g= new god();
List<god> gods= new ArrayList<god>();
while(rs.next()){
g.setUser_name(rs.getString("user_name"));
g.setAge(rs.getInt("age"));
g.setId(rs.getInt("id"));
//添加进集合
gods.add(g);
//清空对象
g=new god();
}
return gods;
}
//查询单条记录的方法
public god get(int id) throws Exception{
connection c= new connection();
Connection con= c.getConnection();
String sql=" select * from imooc_goddess where id= ?";
//预处理
java.sql.PreparedStatement pt= con.prepareStatement(sql);
pt.setInt(1, id);
System.out.println(id);
//输出id值正常
god g= new god();
//执行不要在传递参数了
ResultSet rs=pt.executeQuery();
while(rs.next()){
g.setUser_name(rs.getString("user_name"));
g.setAge(rs.getInt("age"));
}
return g;
}
}
第三步:控制层,代码如下:
//控制层
public class ControlDemo {
model m= new model();
//增删改查的方法
public void add(god g) throws Exception{
m.add(g);
}
public void delete(int id) throws Exception{
m.delete(id);
}
public void update(god g) throws Exception{
m.update(g);
}
//查询所有女神的方法
public void query() throws Exception{
List<god> gods=m.query();
//遍历查询到的女神信息
for(god g:gods){
System.out.println("查询到的姓名为:"+g.getUser_name());
}
}
//根据输入的单个信息进行查询的方法
public void query(List<Map<String, Object>> paramas) throws Exception{
List<god> go=m.query(paramas);
//打印查询到的信息
for(god g:go){
System.out.println("查询到的姓名为:"+g.getUser_name());
}
}
//根据id进行查询
public void get(int id) throws Exception{
god g= m.get(id);
System.out.println("查询到的姓名为:"+g.getUser_name());
}
}
第四步:视图层,代码如下(特别注意循环的控制,控制台循环接收用户的输入并保持某个功能块的循环执行):
public class viewDemo {
static String content="-----欢迎进入查询系统--------"
+ "\r\n1.a增加"
+ "\r\n2.d删除"
+ "\r\n3.u改"
+ "\r\n4.q查询数据库所有的记录"
+ "\r\n5.i根据id查询单个记录"
+ "\r\n6.q2根据姓名或者其他信息进行查询"
+ "\r\n7.qqq退出系统";
static void show(){
System.out.println(content);
}
public static void main(String[] args) {
show();
god g=new god();
ControlDemo control= new ControlDemo();
Scanner sca= new Scanner(System.in);
System.out.println("请输入功能的选项,按7退出系统");
String in=null;
//创建一个控制步骤的变量和一个记忆变量
int k=1;
int k2=1;
String p="";
//开始进入系统,进行循环,重复接受用户的输入信息
while(sca.hasNext()){
//如果输入为7,则退出系统
in = sca.next();
if(in.equals("qqq")){
System.out.println("系统退出成功!");
break;
}else if(("a".equals(in)||"a".equals(p))&&k<4){
p="a";
System.out.println(in);
System.out.println("您选择了增加的方法");
if(k==1){
System.out.println("请输入姓名:");
}
if(k==2){
System.out.println(in);
g.setUser_name(in);
System.out.println("请输入年龄:");
}
if(k==3){
System.out.println(in);
g.setAge(Integer.valueOf(in));
System.out.println("信息录入完毕!");
try {
control.add(g);
g= new god();
System.out.println("添加成功");
} catch (Exception e) {
System.out.println("添加失败");
e.printStackTrace();
}
System.out.println("请按非功能按键结束录入");
}
k++;
}else if(in.equals("d")){
System.out.println("您选择了删除功能");
System.out.println("请输入想要删除的id");
int id=sca.nextInt();
try {
System.out.println("正在执行删除功能");
control.delete(id);
System.out.println("删除成功");
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
else if(in.equals("u")||p.equals("u")){
p="u";
System.out.println("您选择了更新的功能");
if(k2==1){
System.out.println("请输入您更新的id");
}
if(k2==2){
g.setId(Integer.valueOf(in));
System.out.println("id选择成功,您选择了id为:"+g.getId()+"的记录");
System.out.println("请输入姓名:");
}
if(k2==3){
g.setUser_name(in);
try {
control.update(g);
g= new god();
System.out.println("更新记录成功!!");
} catch (Exception e) {
System.out.println("更新记录失败");
e.printStackTrace();
}
}
k2++;
}
//返回主菜单的“m”
else if(in.equals("m")){
show();
}
else{
System.out.println("您的输入有误,请重新输入");
}
}
}
}